Steuerelement Hanlde einer fremden Application bekommen



  • Hallo,

    hallo ich habe mir einen Hook geschrieben und nun brauch ich Handles einzelner Steuerelemente zb von einem Button allerdings ist dieser ohne beschriftung und in Spy++ wird bei ID nur 0 angezeigt.

    Wie kann ich also an das Handle dieses Buttons kommen?


  • Mod

    Wenn es kein anderes Control mit ID 0 gibt ist das doch OK 😉
    Wenn nicht, wirst Du ihn höchstens Anhand der Position identifizieren können.



  • Oder wenn es der einzige Button ist, dann reicht der Classname "Button" (oder so ähnlich) ja auch...



  • nene sind mehrere buttons und alle haben ID 0
    wie würde das gehen mit der position?

    oder gibts noch andere programme mit denen ich die IDs von steuerelementen bekommen kann?



  • Ich würde es so versuchen: Mit EnumChildWindows ( 😉 ) alle Buttons durchgehen und mit GetWindowRect eben die Position überprüfen. Du musst dann ausprobieren, wo dein gesuchter Button ist und die Koordinaten fest codieren.



  • ok danke thx ich werds mal versuchen=)



  • oder die Position mit Spy++ holen und im Source hardkodieren,
    EnumChildWindows ist dann aber die Funktion, die du suchst.



  • Will jetzt nicht extra nen neuen Thread starten und hoff mal das es noch einer liest

    und zwar hab ich jetzt ein weiteres problem. Ich möchte den Inhalt einer Textbox einer anderen Anwendung auslesen und ich hab das mal mit

    PostMessage(GetDlgItem(hWnd, 0x0193), WM_GETTEXT, (WPARAM)255,(LPARAM)buffer);

    die ID hab ich mir mit spy++ geholt und das handle der textbox stimmt auch was ankommt aber irgendwie kommt nur "müll" in den buffer.


  • Mod

    Zeigt der Spy++ denn die richtigen textdaten an?
    Wie ist buffer definiert?
    Kann es sein, dass Du den Unterschied zwischen MBCS und Unicode noch nicht verstanden hast.



  • char buffer[MAX_PATH];

    ja spy zeigt die richtigen daten an

    im großen und ganzen habe ich den unterschied verstanden aber in der Praxis bin ich noch nicht so vertraut damit.


  • Mod

    Und Dein Programm ist auch als MBCS compiliert?



  • mein prog ist in mbcs und leider weis ich nicht ob das programm an dem ich übe in unicode oder mbcs ist. Es handelt sich dabei um den windows taschenrechner und ich versuche dort das ergebnis auszulesen. Ändere ich doch die Captions klappts ohne probleme und auch wenn ich mir den text von nem button hole aber weder SETTEXT oder GETTEXT klappen bei der Textbox.

    Andere frage gibt es hilftreiche dokumentationen die dieses thema behandeln? Also nachrichten senden an und empfangen von anderen programmen? Oder Ein Buch das diese Thema umfasst?


Log in to reply