c++ keybd_event problem

06/14/2010 07:25 djleitno22#1
ich hab ein kleines problem beim tastendruck simulieren in c++ und zwar

Code:
Sleep(100);
 
 keybd_event(VkKeyScan('E'),0,0 , 0);
hier wird ja e gesendet aber leider nur auf das programm das im vordergrund steht
wie kann man das z.b. zu nostale senden??
also nur zu nostale

und wie kann man dem programm sagen das es warten sol bis nostale geöfnet ist??


für jede hilfreiche antwort gibts ein thx

schon mal danke im voraus
06/14/2010 07:52 fridget#2
Das gleiche Problem hatte ich auch schonmal. Also du kannst mit der Funktion FindWindow(a, b) nach einem Fenster suchen, Parameter a ist der Fenstertitel und b ist der Name der Fensterklasse (einer der beiden Parameter darf NULL seien). Rückgabewert ist dann ein Handle(HWND in diesem Fall). Den Handle nimmst du und schickst per SendMessage oder PostMessage folgende drei Messages in genau der Reihenfolge:
WM_KEYDOWN
WM_CHAR
WM_KEYUP
Am besten guckst du bei MSDN, wie die messages aufgebaut seien müssen, ich weiss es nämlich auch nicht aus dem Kopf.

Um darauf zu warten, dass die Anwendung gestartet ist, lässt du FindWindow in einer while laufen, solange es NULL liefert.
Dieser Ansatz funktioniert allerdings meines Wissens nach mit manchen Spielen nicht. Speziell mit denen die fürs auslesen der Tastatur DirectInput statt der normalen Windows-API benutzen.
06/15/2010 11:10 Adroxxx#3
[Only registered and activated users can see links. Click Here To Register...]
Da hast du mal ein Beispiel für SendMessage.

Und wie fridget gesagt hat, funktioniert das bei Spielen die DirectInput benutzten nicht. Da müsste man des hooken.
06/17/2010 12:08 elex smith#4
You need to do your own homework. this is a masterpiece - if you need, youtube the cincinnati ballet!
06/17/2010 14:51 HardCore.1337#5
Benutz lieber Postmessage. Diese Funktion sendet die tasten an ein handle, das du mit FindWindow suchen kannst.