Autor |
Beitrag |
Masterhawk
      
Beiträge: 92
Win 2000,Win XP
D6 Pers
|
Verfasst: Sa 06.11.04 23:05
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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)
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
.Chef
      
Beiträge: 1112
|
Verfasst: Sa 06.11.04 23:56
BenBE hat folgendes geschrieben: | GetAsyncKeyboardState |
Meinst du GetAsyncKeyState oder GetKeyboardState?
Und kann man das nicht mit SetKeyboardState umgehen?
_________________ Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Masterhawk 
      
Beiträge: 92
Win 2000,Win XP
D6 Pers
|
Verfasst: 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
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: 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...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Masterhawk 
      
Beiträge: 92
Win 2000,Win XP
D6 Pers
|
Verfasst: 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
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: So 07.11.04 19:37
Hi,
Habe so was mal mit Hooks gemacht.
Lade keybd_event_Interceptor.zip von ezshare.de/files-de/...Interceptor.zip.html
runter und starte dann Demo.dpr
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Masterhawk 
      
Beiträge: 92
Win 2000,Win XP
D6 Pers
|
Verfasst: So 07.11.04 20:09
Titel: It's done
Yeeehaaa,scheint zu funktionieren...thx...Ich danke euch...
Muss jetzt nur noch implementiert werden...
Nochmal THANKS AT ALL
|
|