Maison >développement back-end >C++ >Comment énumérer les fenêtres d'un processus spécifique dans .NET ?
Énumération des fenêtres d'un processus spécifique dans .NET
La recherche de toutes les fenêtres créées par un processus spécifique est une exigence courante dans de nombreuses applications. Dans .NET, plusieurs méthodes sont disponibles pour réaliser cette tâche. Une approche consiste à énumérer les fenêtres de thread associées au processus cible.
Utilisation de la fonction EnumThreadWindows
La fonction EnumThreadWindows de la bibliothèque user32.dll permet l'énumération de toutes les fenêtres appartenant à un fil particulier. Pour énumérer les fenêtres d'un processus spécifique, vous pouvez parcourir ses threads et appeler EnumThreadWindows pour chaque thread.
Implémentation du code :
Le délégué suivant est utilisé comme rappel dans EnumThreadWindows :
delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);
L'extrait de code suivant énumère les handles de fenêtre d'un processus à l'aide de son ID de processus (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; }
Exemple d'utilisation :
Pour démontrer l'utilisation, vous pouvez récupérer les titres des fenêtres et les imprimer sur la console :
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); } }
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!