Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Tastendruck "simulieren"
Arbengie - Do 22.07.10 11:38
Titel: Tastendruck "simulieren"
Hey, ich will einen kl. Keybinder für ein PC Spiel machen.
Den Chat öffnet man mit der Tasten "t", also muss ich den Tastendruck ja irgendwie "simulieren". Wie kann ich das machen? Mit GetAsyncKeyState prüft man ja, ob eine bestimmte Taste gedrückt worden ist, aber kann man damit auch einen Tastendruck simulieren, obwohl ich wie bei mir die Taste "t" selber nicht drücke.
MfG
ASMFreak - Fr 23.07.10 09:55
Ich habe das nicht getestet, müsste aber so funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var KeyState: TKeyboardState; NewKeyState: TKeyboardState; I: Integer; begin ... GetKeyboardState(KeyState); for I := Low(NewKeyState) to High(NewKeyState) do NewKeyState[I] := 0; NewKeyState[VK_SHIFT] := $81; NewKeyState[VK_GewuenschteTaste]] := $81; SetKeyboardState(NewKeyState); try SendMessage(Handle, WM_KEYDOWN, VK_GewuenschteTaste, 1); SendMessage(Handle, WM_KEYUP, VK_GewuenschteTaste, 1); finally SetKeyboardState(KeyState); end; ... end; |
Gruß, Trutz
Jakob_Ullmann - Fr 23.07.10 10:56
oder einfacher:
Delphi-Quelltext
1: 2:
| keybd_event(Ord('T'), 0, 0, 0); keybd_event(Ord('T'), 0, KEYEVENTF_KEYUP, 0); |
ASMFreak - Fr 23.07.10 11:32
Diese Version nutzt die Windows-API und hat den Nachteil, dass die Message nicht direkt an das gewünschte Fenster geht.
Und wenn schon API, dann besser die modernere Variante SendInput.
Gruß, Trutz
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!