Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menghitung Semua Windows Kepunyaan Proses Khusus dalam .NET?

Bagaimana untuk Menghitung Semua Windows Kepunyaan Proses Khusus dalam .NET?

Susan Sarandon
Lepaskan: 2025-01-05 19:00:40
asal
885 orang telah melayarinya

How to Enumerate All Windows Belonging to a Specific Process in .NET?

Bagaimana untuk menghitung semua tetingkap kepunyaan proses tertentu dalam .NET

Untuk menghitung semua tetingkap yang dicipta oleh proses tertentu, anda boleh menggunakan kaedah berikut. Mula-mula, dapatkan ID proses bagi proses tertentu. Anda kemudiannya boleh memanggil kaedah EnumerateProcessWindowHandles dalam kod berikut untuk menghitung semua pemegang tetingkap yang dimiliki oleh proses tersebut.

delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);

[DllImport("user32.dll")]
static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn,
    IntPtr lParam);

static IEnumerable<IntPtr> EnumerateProcessWindowHandles(int processId)
{
    var handles = new List<IntPtr>();

    foreach (ProcessThread thread in Process.GetProcessById(processId).Threads)
        EnumThreadWindows(thread.Id, 
            (hWnd, lParam) => { handles.Add(hWnd); return true; }, IntPtr.Zero);

    return handles;
}
Salin selepas log masuk

Contoh berikut akan mencetak tajuk semua tetingkap yang dimiliki oleh proses bernama "explorer":

const uint WM_GETTEXT = 0x000D;

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, 
    StringBuilder lParam);

static void Main(string[] args)
{
    foreach (var handle in EnumerateProcessWindowHandles(
        Process.GetProcessesByName("explorer").First().Id))
    {
        StringBuilder message = new StringBuilder(1000);
        SendMessage(handle, WM_GETTEXT, message.Capacity, message);
        Console.WriteLine(message);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menghitung Semua Windows Kepunyaan Proses Khusus dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan