Heim > Backend-Entwicklung > C++ > Wie rufe ich mit EnumWindows() ein Hauptfenster-Handle von seiner Prozess-ID ab?

Wie rufe ich mit EnumWindows() ein Hauptfenster-Handle von seiner Prozess-ID ab?

Patricia Arquette
Freigeben: 2024-12-15 19:50:16
Original
131 Leute haben es durchsucht

How to Retrieve a Main Window Handle from its Process ID using EnumWindows()?

Abrufen des Hauptfenster-Handles von der Prozess-ID mit EnumWindows()

In verschiedenen Szenarien ist es notwendig, das mit verknüpfte Hauptfenster-Handle abzurufen eine bestimmte Prozess-ID. Dadurch können Sie das Verhalten des Fensters manipulieren, indem Sie es beispielsweise in den Vordergrund bringen oder mit seinen Steuerelementen interagieren.

Ähnlich wie beim Ansatz des .NET-Frameworks können Sie die Funktion EnumWindows() nutzen, um dies zu erreichen . So können Sie es implementieren:

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

Dieser Code definiert eine Hilfsstruktur, handle_data, um sowohl die Prozess-ID als auch zu speichern Der Fenstergriff. Die Funktion find_main_window() verwendet EnumWindows(), um alle Fenster der obersten Ebene aufzuzählen, überprüft die jedem Fenster zugeordnete Prozess-ID und filtert mithilfe der Funktion is_main_window() Fenster heraus, die keine Hauptfenster sind. Wenn das Hauptfenster gefunden wird, speichert der Code sein Handle in der Struktur handle_data und gibt es zurück.

Mit diesem Ansatz können Sie das Hauptfenster-Handle von einer Prozess-ID abrufen und so dessen Erscheinungsbild oder steuern Verhalten nach Bedarf.

Das obige ist der detaillierte Inhalt vonWie rufe ich mit EnumWindows() ein Hauptfenster-Handle von seiner Prozess-ID ab?. 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