In anderen Fensten Buttons drücken, Edits maipulieren, etc.



  • Hallo!

    Wie kann ich von meinem Prog aus in anderen Fensten (die nicht zu meinem Prog gehören) Buttons drücken, Edits maipulieren, den Inhalt von ListBoxen auslesen, usw?

    Bin für jede Antwort schon im voraus dankbar!

    MfG
    mastercpp

    PS: Benutze BCB6Pers.



  • Wenn du dessen Handle hast, welches du mit z.B. FindWindow(Ex) oder Enum(Child)Windows bekommst, kannst du mit den Controls umgehen, als wären es deine eigenen.
    Buttons drücken also einfach durch senden von WM_LBUTTONUP, Edits mit SetWindowText und ListBoxen auch durch senden entsprechender Nachrichten.
    ABER: Sobald du mit Pointer arbeitest, geht das nicht, da das andere Programm deine Pointer nicht versteht.



  • Zusatz: Für das Simulieren von Button-Klicks gibt es die Nachricht BM_CLICK.



  • Tach!

    Ich muss leider zugeben das ich mich mit WINAPI recht schlecht auskenne, weil ich schon zu sehr von der VCL des BCB "verwöhnt" worden bin. Desshalb scheiterte ich schon beim Suchen des Fensters mit FindWindow. Es wäre schön, wenn mir jemand ein Beispiel-Code geben könnte, oder ein Link zu einer Internetseite wo sowas ausführlich beschrieben ist.

    Hier meine ersten "Geh-Versuche":

    //---------------------------------------------------------------------------
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    HWND WND = FindWindow("Ausführen", "Ausführen");
    if(IsWindow(WND) == 0) return 1;
    else MessageBoxA(0, "war erfolgreich", "FindWindow", 0);
    // Danach: Ins Edit-Control "Explorer" schreiben.
    // Danach: OK drücken.
    return 0;
    }
    //---------------------------------------------------------------------------
    

    MfG
    mastercpp



  • Du musst im ersten Parameter von FindWindow() NULL angeben. Sonst sucht er nach nem Fenster mit Fenster-Text und Fensterklasse "Ausführen". So nur nach nem Fenster mit Fenster-Text "Ausführen". Um danach die Childfenster zu finden solltest du FindWindowEx benutzen.



  • Kleine Addition:

    man sollte aber am besten immer mit Spy++ die Klasse des Fensters raussuchen da sich der Titel ja auch mit verschiedenen Sprachen ändert...



  • FindWindow()

    1. Parameter: FENSTERKLASSE!
    2. Parameter: FENSTERTITEL!

    Ist FENSTERKLASSE == NULL, dann wird halt der Titel gesucht (und umgekehrt).

    [ Dieser Beitrag wurde am 20.05.2003 um 12:34 Uhr von Hepi editiert. ]


Anmelden zum Antworten