Tasten drücken simulieren



  • Morgen, Morgen,

    folgendes Szenario.

    Ich öffne per Shellexecute eine RDP Session und gelange zum Eingabefesnter, wo ich Nutzername und Passwort eingeben kann.

    Ich will nun das Passwort aus einer Liste automatisch in das Passwortfeld eintragen.

    Das RDP fenster ist im Vordergrund und ich kann per Tastatur problemlos ins Passwortfeld schreiben, aber bekomme es einfach nicht hin, dies per

    keybd_event
    

    oder

    ::PostMessage(GameWindow, WM_KEYDOWN, VK_RETURN, 0);
    

    zu realisieren.

    Hintergrund:
    Wir stellen übernächste Woche unseren Usern eine neue Terminalserver Farm zur Verfügung. Die Erstanmeldung dauert auf jedem TS ca. 30 Sekunden, die erneute Anmeldung unter zwei Sekunden. Diesen Komfort möchte ich den Nutzern von Anfang an bieten. Dafür will ich automatisch eine Anmeldung auf jedem TS simulieren, da wir 280 User x 3 TS ansonsten manuell anmelden müßten.
    Und das ist mal wirklich Sackarbeit...

    Grüße und Danke

    BOA



  • Also das Fenster muss erstmal den Focus haben und dann kannst du per keyb_event oder SendInput Eingaben an das Fenster schicken.

    In der MSDN gibts unter keyb_event oder SendInput weitere Hinweise zu den Funktionen.





  • R3dNeXX schrieb:

    Also das Fenster muss erstmal den Focus haben und dann kannst du per keyb_event oder SendInput Eingaben an das Fenster schicken.

    In der MSDN gibts unter keyb_event oder SendInput weitere Hinweise zu den Funktionen.

    Morgen,

    danke für die Antwort.

    Das Fenster sollte den Focus haben, ich führe vorher folgenden Befehl aus:

    HWND GameWindow = ::FindWindow(0, "rdp_test - system.hosting.de - Remotedesktop");
    ::SetForegroundWindow(GameWindow);
    

    und hole mir das Fenster nach vorne.

    Muß ich noch etwas anderes ausführen ?

    Grüße und Danke

    BOA



  • ihoernchen schrieb:

    schau dir mal SendInput an http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx
    und dazu vielleicht auch http://blog.m-ri.de/index.php/2007/12/27/die-unsitte-tastatureingaben-mit-wm_keydown-nachrichten-zu-simulieren/

    Hi,

    danke, schau ich mir mal an und berichte...

    Grüße

    BOA



  • BOA schrieb:

    R3dNeXX schrieb:

    Also das Fenster muss erstmal den Focus haben und dann kannst du per keyb_event oder SendInput Eingaben an das Fenster schicken.

    In der MSDN gibts unter keyb_event oder SendInput weitere Hinweise zu den Funktionen.

    Morgen,

    danke für die Antwort.

    Das Fenster sollte den Focus haben, ich führe vorher folgenden Befehl aus:

    HWND GameWindow = ::FindWindow(0, "rdp_test - system.hosting.de - Remotedesktop");
    ::SetForegroundWindow(GameWindow);
    

    und hole mir das Fenster nach vorne.

    Muß ich noch etwas anderes ausführen ?

    Grüße und Danke

    BOA

    Probiere dann per SetFocus() den Focus auf dieses Fenster zu setzen, da du ja von FindWindow den HWND zu diesem Fenster hast.
    Sollte eig. so gehn.



  • Edit: nix gelesen und Quatsch gepostet 🙂



  • R3dNeXX schrieb:

    BOA schrieb:

    R3dNeXX schrieb:

    Also das Fenster muss erstmal den Focus haben und dann kannst du per keyb_event oder SendInput Eingaben an das Fenster schicken.

    In der MSDN gibts unter keyb_event oder SendInput weitere Hinweise zu den Funktionen.

    Morgen,

    danke für die Antwort.

    Das Fenster sollte den Focus haben, ich führe vorher folgenden Befehl aus:

    HWND GameWindow = ::FindWindow(0, "rdp_test - system.hosting.de - Remotedesktop");
    ::SetForegroundWindow(GameWindow);
    

    und hole mir das Fenster nach vorne.

    Muß ich noch etwas anderes ausführen ?

    Grüße und Danke

    BOA

    Probiere dann per SetFocus() den Focus auf dieses Fenster zu setzen, da du ja von FindWindow den HWND zu diesem Fenster hast.
    Sollte eig. so gehn.

    Hi noch einmal,

    habe noch die Setfocus-Funktion hinzugefügt, aber ich bekomme mein enter ( zum Testen ) nciht abgesetzt. Nach dem Enter sollte eine Meldung aufgehen a la "Sie konnten nicht angemeldet werden[...]", da ich ja kein Passwort eingetragen habe.

    Nach ausführen der mini.exe ist das Fenster ja auch vorne und hat den Focus, da ich ein Hardware - Enter ja ausführen kann sofort...

    Ich begreife schlicht nicht, warum ich das nicht per Soft senden kann... 😞

    Danke und Grüße

    BOA



  • BOA schrieb:

    ihoernchen schrieb:

    schau dir mal SendInput an http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx
    und dazu vielleicht auch http://blog.m-ri.de/index.php/2007/12/27/die-unsitte-tastatureingaben-mit-wm_keydown-nachrichten-zu-simulieren/

    Hi,

    danke, schau ich mir mal an und berichte...

    Grüße

    BOA

    SendInput habe ich auch schon durch und die Ergänzung von

    AttachThreadInput(GetCurrentThreadId(),GetWindowThreadProcessId(GameWindow,NULL),TRUE);
    

    hat leider auch keinen Erfolg gebracht, obwohl es gut klang...

    😞

    *verzweiflung*

    Grüße und Danke

    BOA


  • Mod

    SebdInput hat nichts mit AttachThreadInput zu tun. Höchtsens die Ausführung von SetFocus etc...


Log in to reply