Tastendruck senden



  • hi

    Ich hab das Game Civilization III und ich möchte es hier auf meinem Laptop gamen. Leider hat er kein Numpad so daß die Steuerung der Einheiten sehr umständlich und unmöglich ist. Ich möchte die Numpad tasten simulieren. Ich habe bisher versucht ein Programm zu machen was die Tasten sendet mit SendInput und mit SendMessage(WM_KEYDOWN und WM_CHAR) aber beides war erfolglos! Wie kann es denn sonst funktionieren an das Game die VK_NUMPADX Tasten zu senden!?



  • geht senden überhaupt, wenn das prog mit GetAsyncKeyState die tasten pollt?
    falls es nicht geht, würde ich mal bei den tastaturlayoutumbastlern wie http://pebbles.schattenlauf.de/layout.php schauen, wie die das machen.



  • Dies hier müßte die taste "1" drücken (nicht auf NumPad).
    Mußt dir nur die passenden Tastennummern fürs NumPad raussuchen (oder alle durchprobieren, z.B in einer Schleife)

    INPUT ipSignal; 
    		ipSignal.type           = INPUT_KEYBOARD; 
    		ipSignal.ki.wVk         = 2L;   //Tastennummer
    		ipSignal.ki.wScan       = 2L;   //Tastennummer
    		ipSignal.ki.dwFlags     = KEYEVENTF_SCANCODE; 
    		ipSignal.ki.time        = 0L; 
    		ipSignal.ki.dwExtraInfo = 0L; 
    		SendInput(1, &ipSignal, sizeof(ipSignal)); 
    		//Sleep(60);
    		ipSignal.ki.dwFlags     = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE; 
    		SendInput(1, &ipSignal, sizeof(ipSignal)); 
    		//Sleep(60);
    


  • Hm und was bringt der scancode im unterschied zum ganz normalen virtuellen key VK_NUMPADX? bis auf den scancode hab ich das ja so schon genauso probiert?

    meinst du denn das Game pollt die ganze Zeit mit GetAsyncKeyState Volkard? Machen Games das so? Ich kann ja mal ausprobieren die Funkton zu hooken, mal sehen ob das Game sie benutzt..



  • Hm und was bringt der scancode im unterschied zum ganz normalen virtuellen key VK_NUMPADX

    Also bei mir hat das mit dem Scancode immer geklappt, das anfdere eben bei manchen Anwendungen nicht.



  • hm ne das funzte irgendwie ned. naja habs nun mit ner dll gemacht und die WndProc des Civ3 fensters gesubclassed, damit funzt es nun wie gewollt 🙂


Anmelden zum Antworten