Mit Batch Datei Keyboard Eingaben an gestartetes C# Spiel senden

Tidusmaster

Lieutenant
Registriert
Nov. 2005
Beiträge
912
Hallo zusammen,

es geht um ein C# Spiel (GeometryFriends.exe), welches ich über eine Batch Datei mit ein paar Parametern starte. Anschließend möchte ich die Keyboard Eingaben {ENTER} bzw. {ESC} an das gestartete Programm senden. Mein Idee ist:

Starte GeometryFriends
Warte 1 Sekunde
Sende ENTER an GeometryFriends
Warte 90 Sekunden
Sende ESC an GeometryFriends
Sende ESC an GeometryFriends

Das ganze soll dann immer 10 mal mit verschiedenen Parametern gemacht werden, um automatisiert zu testen. Direkten Zugriff auf das Spiel habe ich nicht, ich bekomme nur über ein Interface Informationen vom Spiel die ich verarbeite.

Was ich bisher habe:

Code:
@if (@CodeSection == @Batch) @then

@echo off

set SendKeys=CScript //nologo //E:JScript "%~F0"

CD C:\Users\Tidusmaster\Source\Workspaces\Arbeitsbereich\GFC\Code\GeometryFriendsAgents\GeometryFriendsFiles\

START GeometryFriends.exe -l 10 5

TIMEOUT 1 /nobreak

%SendKeys% "{ENTER}"

TIMEOUT 10 /nobreak

@end

// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.AppActivate("GeometryFriends");
WshShell.SendKeys(WScript.Arguments(0));

Das Spiel wird korrekt gestartet, aber leider wird ENTER nicht ausgeführt. Ich habe mir das ganze einfach zusammengegoogelt, aber komme im Moment nicht mehr weiter.

Wäre für jede Hilfe dankbar.

Gruß
Tidusmaster
 
AutoHotkey sieht sehr gut aus, aber irgend wie nimmt das Spiel den {Enter} Befehl oder auch {Up} oder {Down} nicht an. Aktiv sollte das Fenster jedoch sein, da am Ende WinClose richtig ausgeführt wird. Es scheint aber kein generelles Problem zu sein, da im Notepad Fenster die Send Befehle funktionieren.

Das Script sieht wie folgt aus:
Code:
SetWorkingDir, C:\Users\Tidusmaster\Source\Workspaces\Arbeitsbereich\GFC\Code\GeometryFriendsAgents\GeometryFriendsFiles
Run, GeometryFriends.exe -l 10 5
WinWaitActive, Geometry Friends
Sleep 3000
Send {Enter}
Sleep 10000
WinClose

EDIT:
Hachja... Es muss
Code:
Send {Enter down}{Enter up}
heißen, läuft also jetzt
 
Zuletzt bearbeitet:
Zurück
Oben