Heim > Backend-Entwicklung > C++ > Wie zähle ich alle Windows auf, die zu einem bestimmten Prozess in .NET gehören?

Wie zähle ich alle Windows auf, die zu einem bestimmten Prozess in .NET gehören?

Susan Sarandon
Freigeben: 2025-01-05 19:00:40
Original
850 Leute haben es durchsucht

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

So zählen Sie alle Fenster auf, die zu einem bestimmten Prozess in .NET gehören

Um alle von einem bestimmten Prozess erstellten Fenster aufzuzählen, können Sie die folgende Methode verwenden. Rufen Sie zunächst die Prozess-ID eines bestimmten Prozesses ab. Anschließend können Sie die Methode EnumerateProcessWindowHandles im folgenden Code aufrufen, um alle zum Prozess gehörenden Fensterhandles aufzulisten.

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;
}
Nach dem Login kopieren

Das folgende Beispiel gibt die Titel aller Fenster aus, die zum Prozess mit dem Namen „explorer“ gehören:

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);
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie zähle ich alle Windows auf, die zu einem bestimmten Prozess in .NET gehören?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage