Heim > Backend-Entwicklung > C++ > Wie erhalte ich das Hauptfenster-Handle mithilfe einer Prozess-ID?

Wie erhalte ich das Hauptfenster-Handle mithilfe einer Prozess-ID?

Patricia Arquette
Freigeben: 2024-12-08 14:51:11
Original
182 Leute haben es durchsucht

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

So rufen Sie das Hauptfenster-Handle mithilfe der Prozess-ID ab:

Um das Hauptfenster-Handle eines Prozesses abzurufen, können Sie Folgendes verwenden Schritte:

  1. Verwenden Sie die Funktion EnumWindows(), um alle Fenster der obersten Ebene im aufzulisten System.
  2. Überprüfen Sie innerhalb der Rückruffunktion enum_windows_callback(), ob die dem aktuellen Fenster zugeordnete Prozess-ID mit der Zielprozess-ID übereinstimmt.
  3. Wenn eine Übereinstimmung gefunden wird, bestimmen Sie, ob das aktuelle Fenster vorhanden ist ein Hauptfenster, indem Sie überprüfen, ob es keinen Besitzer hat (GetWindow(handle, GW_OWNER) == (HWND)0) und sichtbar ist (IsWindowVisible(handle) == TRUE).
  4. Nachdem Sie das Hauptfenster identifiziert haben, speichern Sie dessen Handle in der handle_data-Struktur und geben Sie FALSE zurück, um die Aufzählung zu stoppen.

Hier ist ein Beispielcode das diese Schritte umsetzt:

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);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erhalte ich das Hauptfenster-Handle mithilfe einer Prozess-ID?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage