Heim >Backend-Entwicklung >C++ >Wie zähle ich Windows eines bestimmten Prozesses in .NET auf?
Auflisten von Fenstern eines bestimmten Prozesses in .NET
Das Finden aller von einem bestimmten Prozess erstellten Fenster ist in vielen Anwendungen eine häufige Anforderung. In .NET stehen mehrere Methoden zur Verfügung, um diese Aufgabe zu erfüllen. Ein Ansatz besteht darin, Thread-Fenster aufzuzählen, die dem Zielprozess zugeordnet sind.
Verwendung der Funktion „EnumThreadWindows“
Die Funktion „EnumThreadWindows“ aus der Bibliothek „user32.dll“ ermöglicht die Aufzählung aller zugehörigen Fenster ein bestimmter Thread. Um Fenster eines bestimmten Prozesses aufzuzählen, können Sie seine Threads durchlaufen und EnumThreadWindows für jeden Thread aufrufen.
Code-Implementierung:
Der folgende Delegat wird als Rückruf verwendet in EnumThreadWindows:
delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);
Das folgende Codefragment listet die Fensterhandles von auf ein Prozess unter Verwendung seiner Prozess-ID (PID):
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; }
Beispielverwendung:
Um die Verwendung zu demonstrieren, können Sie die Fenstertitel abrufen und ausdrucken Konsole:
private const uint WM_GETTEXT = 0x000D; [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam); [STAThread] 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); } }
Das obige ist der detaillierte Inhalt vonWie zähle ich Windows eines bestimmten Prozesses in .NET auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!