ermn..
das ding arbeitet nicht mit keyboardpuffer, sondern gibt den momentanen status zurück, d.h. solange die taste gedrückt ist, liefert die abfrage den gedrückt-status, sooft halt in der zeit die schleife durchlaufen wird.
Kiffi hat hier die einfachste lösung angeboten: warten, bis taste wieder losgelassen.
wenn du in der zwischenzeit noch etwas anderes machen willst, also, keine warteschleife benutzen kannst wie Kiffis beispiel, musst du mit flags arbeiten:
Code: Alles auswählen
; - Hauptschleife Anfang
...
; irgendwo drin
; Tastenabfrage
If GetAsyncKeyState_(#VK_ESCAPE) And EscAct = 0
EscAct = 1
; das was passieren soll, wenn Esc gedrückt wird
EndIf
If GetAsyncKeyState_(#VK_ESCAPE) = 0
EscAct = 0
EndIf
...
; - Hauptschleife Ende
durch das Flag wird sichergestellt, dass die aktion genau einmal pro tastendruck ausgeführt wird.
wie gesagt, dass ist nur nötig, wenn deine schleife kontinuierlich laufen muss, sonst kannst du auch einfach aufs loslassen warten wie von Kiffi vorgeschlagen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.