[C/C++] simulierten Tastendruck an ein Spiel senden (Edit: Gerätetreiber?)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von bonsai, 3. Oktober 2007 .

  1. 3. Oktober 2007
    simulierten Tastendruck an ein Spiel senden (Edit: Gerätetreiber?)

    Hi Leute! :]

    Ich hab vor ner Weile mal probiert, an ein Spiel, einen simulierten Tastendruck zu senden.
    Habe auch mit einem Programm ähnlich wie Microsoft Spy++ geschaut, dass auch ja alles richtig ankommt.

    Leider passiert in dem Game überhaupt nichts...
    Habe einfach mit SendMessage ein WM_KEYDOWN an das Game gesendet, mit den entsprechenden Werten.

    ---

    Weiß jemand wie man einem Spiel einen Tastendruck vortäuschen kann?
    Ich hab bestimmt 2 Tage lang gegooglet bis ich kein Bock mehr hatte...



    MfG bonsai
     
  2. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    Das geht mit der Funktion keybd_event, damit wird ein globaler Tastendruck erzeugt.
     
  3. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    Bei manchen Spielen musst du vor dem Aufruf mit KEYEVENTF_KEYUP (google einfach nach keybd_event, dann weißt du, was ich mein^^) eine kleine Pause (z. B. mit Sleep) machen, damit das Spiel den Tastendruck auch erkennt.
     
  4. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    Hm... ihr meint das wohl so:

    Code:
    HWND Game = FindWindow(NULL, "Name-des-Games");
     
    if (Game)
    {
     SetForegroundWindow(Game)
     keybd_event(VK_UP, 0, 0, 0); 
     Sleep(10); 
     keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
    }
    
    Muss ich mal probieren ob das klappt.
    Hab bis jetzt immer gedacht das würde bei Spielen nicht klappen.
     
  5. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    japp... du kannst das sleep auch unter das key up machen.

    Ich habs eben mit UT2k4 versucht geht soweit

    Code:
    Taste einmal drücken:
    keybd_event(VK_UP, 0, 0, 0); 
    keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
    Sleep(1000);
    
    Taste gedrückt halten
    keybd_event(VK_UP, 0, 0, 0);
    irgendwie must du sie halt wieder loslassen
    Den Befehl Sleep machst du das das abarbeiten der Tasten nicht zu schnell erfolgt

    Um welches Game gehts denn?

    mfg
     
  6. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    Also bei mir funktioniert das nicht! ;(
    Es geht um Need for Speed Underground 1...

    Code:
     HWND NFS;
     NFS = FindWindow("GameFrame", "NFS Underground");
     
     if (NFS)
     {
     BtnTray->Caption = String(status); // Status anzeigen
     
     if (status == 1)
     {
     SetForegroundWindow(NFS);
     
     keybd_event(VK_UP, 0, 0, 0);
     Sleep(25);
     keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
     }
     }
    
    Hab auch das 'Sleep(1000) // 1 Sekunde' darunter probiert - bringt nix

    --edit--

    Hab grad gelesen das manche Spiele die Tastatureingaben direkt vom Gerätetreiber holen...
    Jemand ne Idee wie man das umsetzen könnte? ^^
     
  7. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    Glaub mir ich hab auch lange gesucht
    Was willst du denn in NFS anstellen? Das er Automatisch fährt? XD

    Zurück zum Thema:
    Wie machste das ganze?
    Game Starten?
    Programm an und dann wieder ins Game?

    Versuch es mal ohne den Status abzufragen...
     
  8. 3. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden

    ich hab bisher folgendes probiert:
    - SendMessage
    - keybd_event
    - SendInput

    ---

    Hab in einem anderen Forum diesen Beitrag gefunden:

    Hoffe das ist ok, wenn ich den Link hier poste:
    http://www.c-plusplus.de/forum/viewtopic-var-t-is-20723-and-highlight-is-sendinput.html



    MfG bonsai
     
  9. 5. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden (Edit: Gerätetreiber?)

    Hat das wirklich noch keiner von euch gemacht?
    Bzw. hat niemand ne Idee wie ich das machen könnte?

    Ich komm da echt nicht weiter...
     
  10. 5. Oktober 2007
    AW: simulierten Tastendruck an ein Spiel senden (Edit: Gerätetreiber?)

    Versuch doch mal nen anderes Game und schau ob dus überhaupt Richtig funktionieren würde!
    Fenster Modus mal probiert? Falls es sowas überhaupt gibt.
    Habs Game leider nicht drauf sonst könnt ich verschiedenes probieren.

    /e
    Habs grad probiert geht leider nicht. ich hab keine idee mehr...

    mfg
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.