Tastendruck Simulieren (D3D)
-
Hallo ich möchte einen tastendruck simulieren bei einem spiel das mit DirectInput läuft hab schon vieles probiert
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0); PostMessage(hWnd, WM_KEYDOWN,0x45,0x12001); void SimKey(int vKey) { KEYBDINPUT ki={0}; ki.wVk = vKey; ki.wScan = MapVirtualKeyEx(vKey, 0, GetKeyboardLayout(0)); INPUT ipEvent; ipEvent.type = INPUT_KEYBOARD; ipEvent.ki = ki; SendInput(1,&ipEvent,sizeof(INPUT)); }also die sahen funzen unter windows aber nicht in dem spiel

hoffe mir kann einer helfen

-
Ich glaube nicht, dass das funktioniert, da DirectInout doch die Information direkt vom Eingabegerät liest - kann aber auch sein, dass ich mich irre

-
du speicherst doch bestimmt deine tasten in irgendeine var
zb: bool keys[value]; oder dergleichen setzt dies doch einfach auf true; :pwas möchstest denn du damit erreichen ?
-
Ich glaube, er will bei einem fremden Spiel einen Tastendruck simulieren

-
genau das will ich aber da das game directInput benutz klappt das irgentwie ned
hat keiner ne alternative idee wie ich nen tastendruck simululieren kann

-
kann mir einer mal was zu DeviceIoControl sagen

-
Hallo
Das ist ein ziemlich alter Beitrag. Aber ich habe genau das selbe Problem. Ich möchte auch für ein Spiel die Tastaturdrücke simulieren. Hat mir jemand eine Lösung dazu?
Danke, Gruss wima
-
Irgendwie wird das immer und immer wieder gefragt und ich antworte immer und immer wieder die selbe Vermutung:
Das wird so einfach nicht gehen, da sich DirectInput einen Snapshot, oder auch Abbild, vom gesamten Keyboard holt und nicht eventbasiert arbeitet.
void handleInput() { static BYTE snapshot[256]; // Speicher für Snapshot keyboard->Acquire(); // Keyboard Zugriff holen keyboard->GetDeviceState(256, (LPVOID)snapshot); // Keyboardabbild machen if(keystate[DIK_SPACE] & 0x80) // Wurde Space gedrückt? MessageBox(NULL, "Space gedrueckt!", "bla", MB_OK); return; }Mir würden zwei Möglichkeiten einfallen:
1. Man könnte selbst einen Tastaturtreiber programmieren, der gleichzeitig einen Socket aufmacht und dadurch gesteuert werden kann.2. Der Keyboard Snapshot wird von DirectInput in einem 256 Byte großem Array gespeichert. Du könntest dir die Speicheradresse des Arrays in dem fremden Programm holen und den Speicher selbst manipulieren