HWND von unbekanntem Fenstertitel bekommen



  • Hi, ich möchte von einem Fenster den Handle bekommen.
    Der Fenstertitel ist variabel..
    für FindWindow(NULL, "") brauch man ja den Titel, aber der ist immer unterschiedlich...
    Danke.



  • Ja dann hast du pech :p
    Nein Also, Bei FindWindow kann man auch mittels der Fensterklasse ein HWND suchen. Nimm dir ein Programm wie Spy++ und guck dir die Fensterklasse an und nimm die. Ansonsten gibt es etwas im Fenstertitel das immer gleich ist? Wie Bei Firefox (den hab ich ja gerade vor mir deswegen ihn als Bsp.) wo die Adresse in der Titelzeile steht (ist ja immer variabel) und dann ein "- Mozilla Firefox"? Wenn ja kannst du ja alle Fenster durchgehen und auf dieses eine immer gleiche Prüfen und dann hast ja den Fensternamen.

    schirrmie



  • cool, danke 🙂
    Aber was ist eigentlich dieser Klassenname, und hat jedes Programm einen unterschiedlichen?

    Und wie würde denn die 2. Variante gehen? ._.

    Danke.



  • Ich versuche schon seit einiger Zeit ein Handle von einem Fenster zu bekommem mit FindWindow. Hier wurde gesagt das man das mit dem Fenstertitel machen kann. Also wie krieg ich jetzt z.B das Handle von einem Fenster mit dem Titel C/C++ Forum :: Antwort schreiben...

    jetzt mal als Beispiel.

    Ich versuche es mit:
    lHandle=FindWindow(NULL,"C/C++ Forum :: Antwort schreiben");

    geht nicht....

    MfG



  • wenn der fenstertitel wirklcih stark variiert und auch der Fensterklassenname nicht eindeutig ist, würde ich nach dem Namen des Prozesses noch schauen.
    Also bei Firefox ist es jeztt z.b. firefox.exe.
    Mit den Toolhelp-Funktionen (CreateToolhelp32Snapshot(..))hole ich mir eine Prozessauflistung und schaue ob firefox.exe läuft. Dann habe ich auch die Prozess-ID.
    Dann hole ich mir mit EnumWindows() alle Fenster. Ich gehe dann Fenster für Fenster durch und schaue mit GetWindowThreadProcessId(...) (oder so ähnlich) nach der Prozess-ID des Fensters. Finde ich die von firefox.exe, habe ich eigenltich schon gewonnen.


Anmelden zum Antworten