Récupération du handle de la fenêtre principale à partir de l'ID de processus
Dans le but de mettre une fenêtre spécifique au premier plan, une compréhension de la façon d'obtenir son Le handle de la fenêtre principale à partir de son ID de processus est crucial. Ce processus est généralement utilisé pour gérer les fenêtres et les mettre en évidence.
Solution utilisant .NET et EnumWindows()
Il existe une implémentation .NET qui utilise EnumWindows() pour identifier la fenêtre principale. Cette fonction énumère toutes les fenêtres de niveau supérieur du système, vous permettant de trouver celle associée à un processus particulier.
Implémentation du code en C
Voici un code C extrait qui démontre la même approche que l'implémentation .NET :
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 crée une fonction de rappel qui vérifie l'ID de processus de chaque fenêtre et son statut de visibilité pour déterminer s'il s'agit de la fenêtre principale. S'il correspond à l'ID de processus et aux critères de visibilité spécifiés, le handle de fenêtre est stocké dans la structure handle_data.
En appelant EnumWindows() avec cette fonction de rappel, vous pouvez parcourir toutes les fenêtres de niveau supérieur, identifier la principale fenêtre pour l’ID de processus spécifié et obtenez son handle. Cette poignée peut ensuite être utilisée pour amener la fenêtre vers l'avant ou effectuer d'autres opérations liées à la fenêtre.
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!