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
Susan Sarandonasal
2025-01-05 19:00:40905semak imbas

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;
}

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);
    }
}

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!

Kenyataan:
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