Window Handle über die ProzessID



  • Hallo,

    ich durchsuche alle Prozesse, die auf meinem Rechner laufen, mit Hilfe der Funktionen Process32First() und Process32Next() nach bestimmten Prozessen. Das klappt auch und ich erhalte ein PROCESSENTRY32-Objekt, in dem sich die ProzessID des gesuchten Prozesses befindet. Nun würde ich gern das Fenster Handle dieses Prozesses herausfinden. Aber irgendwie finde ich keine richtige Funktion! Kann mir vielleicht jemand von euch helfen?

    Gruß



  • Es gibt nicht "das" Fensterhandle, weil es Prozesse ohne Fenster oder mit mehreren Fenstern gibt.

    Du kannst aber per EnumWindows alle Top-Level Fenster durchgehen, mittels GetWindowThreadProcessId in der EnumWindowsProc die jeweilige ProcessId des gerade gefundenen Fensters holen und vergleichen mit Deinem Wert.

    Somit hast Du dann zumindest "ein Top-Level Fenster, was zu ProcessId XXXXX gehört".



  • Hallo,

    und wie kann ich mit diesen Funktionen über sämtliche Fenster iterieren. Kann sein, dass ich grad auf der Leitung stehe, aber irgendwie kann ich mir das schwer vorstellen.

    Könntest du mir vielleivht etwas Code zeigen?

    Gruß



  • Bei EnumWindowsProc steht:

    To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE.

    Ansonsten findest du vielleicht hier passende Code-Schnippsel 🙂


Anmelden zum Antworten