Entwickler-Ecke
Windows API - Simulierte Tastendrücke erkennen???
Masterhawk - Sa 06.11.04 23:05
Titel: Simulierte Tastendrücke erkennen???
Hi, gibt es eine Procedure/function mit der sich gefakte Tastendrücke erkennen lassen...??? Wäre echt nett wenn ihr mir helfen könntet...
BenBE - Sa 06.11.04 23:51
Eine recht einfache Möglichkeit wäre, mit GetAsyncKeyboardState zu prüfen, ob wirklich eine Taste gedrückt ist. Dazu müsstest du einfach in der Nachrichten-Behandlung diese Prüfung einbauen. Liefert GetAsyncKeyboardState, dass keine Taste gedrückt wurde, wurde die Taste simuliert.
Nachteil: Bei hoher Prozessor-Auslastung, kann es passieren, dass auch gedrückte Tasten als "simuliert" eingestuft werden.
Eine andere Möglichkeit wäre, die API-Funktionen zum simulieren von Tastendrücken zu hooken. Das ist aber
1. kompliziert
2. fehleranfällig
3. Überdimensioniert (wie die meisten API-Hooks)
.Chef - Sa 06.11.04 23:56
BenBE hat folgendes geschrieben: |
GetAsyncKeyboardState |
Meinst du GetAsyncKeyState oder GetKeyboardState? ;-)
Und kann man das nicht mit SetKeyboardState umgehen?
BenBE - So 07.11.04 00:18
Ich meinte GetAsyncKeyState. Und die fragt IMHO direkt die Hardware ab -> keine Manipulation möglich (außer über API-Hook).
Masterhawk - So 07.11.04 18:05
@BenBe: könntest du mir die Source posten, dann kann ich mir bestimmt was daruntervorstellen...Wäre echt nett..
Es sollte so funktionieren, dass ich am ende eine Aussage hab ob der Tastendrück simuliert wurde oder nicht.
Eine Frage zum Schluss: Würde es auch über DirectInput von DirectX gehen???
Motzi - So 07.11.04 18:09
Also auf GetAsyncKeyState würd ich nicht vertrauen..! IMHO liefert aber ein Lowlevel-Keyhook Infos darüber.. müsste man mal im SDK nachschauen...
Masterhawk - So 07.11.04 18:15
Thx, aber könnte das mal einer tun der mehr ahnung davon hat als ich... :?
Ich wäre für jeden geposteten Vorschlag dankbar
BenBE - So 07.11.04 19:47
Im OnKeyDown-Ereignis des Formulars mal folgenden Source probieren:
Delphi-Quelltext
1: 2: 3: 4:
| If GetAsyncKeyState(VK_A) <> 0 Then Caption := 'Taste wirklich gedrückt!' eöse Caption := 'Taste nur simuliert!'; |
Hab aber leider kein Delphi zum Testen offen. Bitte guck dir für nähere Infos mal die DOH zur Funktion GetAsyncKeyState an. Dort findest du mehr Infos.
Masterhawk - So 07.11.04 20:09
Titel: It's done
Yeeehaaa,scheint zu funktionieren...thx...Ich danke euch...
Muss jetzt nur noch implementiert werden... :D
Nochmal THANKS AT ALL
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!