Home > Backend Development > C++ > How to Get the Main Window Handle Using a Process ID?

How to Get the Main Window Handle Using a Process ID?

Patricia Arquette
Release: 2024-12-08 14:51:11
Original
181 people have browsed it

How to Get the Main Window Handle Using a Process ID?

How to Retrieve the Main Window Handle Using Process ID:

To retrieve the main window handle of a process, you can employ the following steps:

  1. Utilize the EnumWindows() function to enumerate all top-level windows in the system.
  2. Within the callback function enum_windows_callback(), check if the process ID associated with the current window matches the target process ID.
  3. If a match is found, determine if the current window is a main window by verifying that it has no owner (GetWindow(handle, GW_OWNER) == (HWND)0) and is visible (IsWindowVisible(handle) == TRUE).
  4. Upon identifying the main window, store its handle in the handle_data structure and return FALSE to stop the enumeration.

Here's an example code that implements these steps:

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);
}
Copy after login

The above is the detailed content of How to Get the Main Window Handle Using a Process ID?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template