Autor Beitrag
Masterhawk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 92

Win 2000,Win XP
D6 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 92

Win 2000,Win XP
D6 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 92

Win 2000,Win XP
D6 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 07.11.04 19:47 
Im OnKeyDown-Ereignis des Formulars mal folgenden Source probieren:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 92

Win 2000,Win XP
D6 Pers
BeitragVerfasst: 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