Achso, gerade noch gefunden:
Zitat:
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
Windows ist also so schlau sich zu merken, was seit dem letzten Aufruf von GetAsyncKeyState passiert ist.
Die obige Quelle ist aber in der Hinsicht ein bisschen unsauber, dass man den Rückgabewert von GetAsyncKeyState auf bestimmte Bits prüfen und nicht mit einem numerischen Wert vergleichen sollte.
Delphi-Quellcode:
TasteJetztGeradeGedrueckt := (GetAsyncKeyState(key) and $8000) <> 0;
TasteSeitDemLetztenMalGedrueckt := (GetAsyncKeyState(key) and $0001) <> 0;
Der Quelltext oben prüft auf -31767 ($8001), also ob beide Bedingungen zutreffend sind. Dadurch gibt's keine Wiederholungsfehler.