Tastendruck simulieren (gelöst)
-
Hallo Forum, ich habe nen wenig in der FAQ gesucht, und auch gleich was gefunden. Ich will an das Spiel Diablo II einen Tastendruck senden, was auch wunderbar funktioniert. Nun habe ich aber das problem, das der Tastendruck auch nur gesendet wird, wenn mein Programm im Vorergrund, bzw angewehlt ist! Ich möchte aber ein Programm schreiben, was die Hotkeys simuliert, also, das wenn ich die leertaste drücke, z.b ESC an das Programm gesendet wird ...
Aber dabei, soll halt diablo2 noch im Vordergrund sein!
Mein Code sieht bisher so aus:
switch (wParam) { case VK_SPACE: { HWND hwnd = FindWindow("Diablo II", NULL); if(hwnd) { SetForegroundWindow(hwnd); keybd_event(VK_ESCAPE, 0, 0, 0); keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0); } else { MessageBox(hWnd,"Programm konnte nicht gefunden werden!","Error!",MB_OK); } break; } } return 0; }
-
ab das Problhm gelöst, ich habe einfach einen Timer eingebaut, der die ganze eit abfragt ob eine taste gedrückt wurde, das mache ich dann mittels GetAsyncKeyState .
Hab da noch den Parameter 0x8000 angehangen, damit das Programm systemweit abfragt.
Auf jeden fall funktioniert das^^
-
Nagut, dann stelle ich mal ne andere frage, weiß jmand wo die ganzen Zahlen Codes für die tasten stehen?
Also für a ist das ja z.b 65, aber ich würde gerne wissen wo die für die ganzen anderen Tasten stehen
-
VK_*
-
Meinst du die Virtual Key Codes?
Schauma hier:
http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspxOder meinst du die ASCII Tabellen Codes?
Dann hier:
http://msdn.microsoft.com/en-us/library/4z4t9ed1(VS.71).aspx
-
Danke, hat mir sehr weiter geholfen
-
Wie ist denn dr ASCII Code für Tab?
-
Es giebt keinen ASCII Code für Tab, ASCII Codes sind die Codes für die Zeichen.
Um einen Tab zu generieren musst du Steuerzeichen benutzen.
Tab hat das Steuerzeichen: \t
Oder z.b. hat NewLine das Steuerzeichen: \n
-
elDorado schrieb:
giebt
Autsch!
elDorado schrieb:
Tab hat das Steuerzeichen: \t
ASCII 9
elDorado schrieb:
Oder z.b. NewLine hat das Steuerzeichen: \n
ASCII 10
-
Ne, es muss ja die Taste Sein, also, wenn ich diese Tab taste drücke, soll das Programm nen paar andere Tasten simulieren ...
Nun weiß ich aber nicht wie ich diese stuerelemente einbinden soll
Ich mache das nähmlich mit ASCII wie folgt:
memcpy(&lkeys,&keys,sizeof(keys)); for(int i=0 ;i<257; i++) { if(GetAsyncKeyState(i)==0) { keys[i]=FALSE; } else { keys[i]=TRUE; } } if(keys[65]==TRUE && lkeys[65]==FALSE) { HWND hwnd = FindWindow("WarCraft III", NULL); if(hwnd) { ... simuliere Tasten }