Maison >développement back-end >C++ >Comment récupérer toutes les fenêtres associées à un processus spécifique dans .NET ?
Récupérer toutes les fenêtres appartenant à un processus spécifique dans .NET
L'énumération de toutes les fenêtres associées à un processus particulier est une tâche cruciale pour diverses automatisations et des scénarios de communication inter-processus. Dans .NET, cela peut être réalisé en tirant parti de l'API EnumThreadWindows, qui permet l'itération sur toutes les fenêtres créées par un thread spécifique.
Pour énumérer les fenêtres appartenant à un processus en fonction de son ID de processus (PID), suivez ces étapes :
Parcourez tous les threads du processus cible en utilisant EnumThreadWindows :
foreach (ProcessThread thread in Process.GetProcessById(processId).Threads) EnumThreadWindows(thread.Id, (hWnd, lParam) => { handles.Add(hWnd); return true; }, IntPtr.Zero);
Exemple d'utilisation :
Voici un exemple d'utilisation de la méthode EnumerateProcessWindowHandles pour récupérer les titres de fenêtres de toutes les fenêtres créées par le processus de l'Explorateur Windows :
using System; using System.Collections.Generic; using System.Runtime.InteropServices; public class Program { 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); } } 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; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!