Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Dauer eines Tastendrucks ermitteln?
masteroffinalfantasy - Do 16.08.07 10:32
Titel: Dauer eines Tastendrucks ermitteln?
Servus
ich hab ein Prob... ich möchte eine Taste global abfangen, dass sollte so gehen:
Delphi-Quelltext
1:
| if GetAsyncKeyState(VK_Return) < 0 then ... ; |
Wie kann ich die exakte Dauer des Tastendruckes herausfinden ? :nixweiss:
Danke wie immer im voraus ;)
arj - Do 16.08.07 12:52
Window-Message des Tastendrucks abfangen -> mit GetTickCount den Wert speichern
Window-Message des Tastenloslassen abfangen -> mit GetTickCount den Wert speichern
Differenzen ergibt Dauer in Millisekunden.
Reinhard Kern - Do 16.08.07 13:10
Titel: Re: Dauer eines Tastendrucks ermitteln?
masteroffinalfantasy hat folgendes geschrieben: |
Servus
ich hab ein Prob... ich möchte eine Taste global abfangen, dass sollte so gehen:
Delphi-Quelltext 1:
| if GetAsyncKeyState(VK_Return) < 0 then ... ; |
Wie kann ich die exakte Dauer des Tastendruckes herausfinden ? :nixweiss:
Danke wie immer im voraus ;) |
1. GetAsyncKeyState liefert nur dem Thread ein Ergebnis, der den KB-Focus hat - funktioniert also nicht (bzw. selten) wie gewünscht.
2. Die anderen KB-Funktionen wie GetKeyState sind alles andere als Realtime, sondern geben den Zustand am Ende (!) der message queue an. Daraus kann man die Dauer des Drucks nicht genau bestimmen; da nicht feststeht, wann die queue abgearbeitet wird, genau genommen überhaupt nicht; der Fehler kann beliebig gross werden.
Gruss Reinhard
BenBE - Do 16.08.07 17:13
Wie bereits durch meine Vorredner gesagt: Genau geht's nicht.
Aber Grundlegend:
OnKeyDown --> Startzeit aufschreiben
OnKeyUp --> Endzeit aufschreiben, Differenz berechnen
Anbieten würden sich hier:
Now, Date und Time für Langsamtipper, GetTickCount für Normalschreiber oder QueryPerformanceCounter für die GANZ schnellen Schreiber ^^ ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!