Récupération du handle de la fenêtre principale à partir de l'ID de processus à l'aide d'EnumWindows()
Dans divers scénarios, il devient nécessaire de récupérer le handle de la fenêtre principale associé à un ID de processus spécifique. Cela vous permet de manipuler le comportement de la fenêtre, par exemple en la plaçant au premier plan ou en interagissant avec ses contrôles.
Semblable à l'approche adoptée par le framework .NET, vous pouvez exploiter la fonction EnumWindows() pour y parvenir. . Voici comment l'implémenter :
Implémentation en C/C :
struct handle_data { unsigned long process_id; HWND window_handle; }; HWND find_main_window(unsigned long process_id) { handle_data data; data.process_id = process_id; data.window_handle = 0; EnumWindows(enum_windows_callback, (LPARAM)&data); return data.window_handle; } BOOL CALLBACK enum_windows_callback(HWND handle, LPARAM lParam) { handle_data& data = *(handle_data*)lParam; unsigned long process_id = 0; GetWindowThreadProcessId(handle, &process_id); if (data.process_id != process_id || !is_main_window(handle)) { return TRUE; } data.window_handle = handle; return FALSE; } BOOL is_main_window(HWND handle) { return GetWindow(handle, GW_OWNER) == (HWND)0 && IsWindowVisible(handle); }
Ce code définit une structure d'assistance, handle_data, pour stocker à la fois l'ID du processus et la poignée de la fenêtre. La fonction find_main_window() utilise EnumWindows() pour énumérer toutes les fenêtres de niveau supérieur, vérifie l'ID de processus associé à chaque fenêtre et filtre les fenêtres qui ne sont pas des fenêtres principales à l'aide de la fonction is_main_window(). Si la fenêtre principale est trouvée, le code stocke son handle dans la structure handle_data et le renvoie.
En suivant cette approche, vous pouvez récupérer le handle de la fenêtre principale à partir d'un ID de processus, vous permettant de contrôler son apparence ou comportement selon les besoins.
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!