Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Seltsames Verhalten von GetAsyncKeyState?

  Alt 23. Okt 2017, 11:57
GetAsyncKeyState hat zwei Werte (Bits) in seinem Result, der "doppelte" Aufruf sollte sich hier (2) eigentlich garnicht auswirken, im Gegensatz zu (1), aber da wäre dein Vorgehen eher tödlich.

Test: Drücke die Tasten so lange, bis du diesen Dialog siehts.
[EDIT] Lies die Dokumentation und bedenke deine falsche Auswertung (4) -> MSDN-Library durchsuchenGetAsyncKeyState.

Delphi-Quellcode:
1: Ord(GetAsyncKeyState(...)) <> 0 // LSB: Taste wurde zwischen jetzt und dem letzten Aufruf von GetAsyncKeyState gedrückt.
2: GetAsyncKeyState(...) < 0 // MSB: Taste ist "jetzt" gedrückt, während des Aufrufs !!!
3: GetKeyState(...) // Taste wurde gedrückt, als Windows mit der aktuellen Aktion anfing (als die aktuell verarbeitete Message "gesendet" wurde)

4: GetAsyncKeyState(...) = 0 oder GetAsyncKeyState(...) <> 0 // MSB *und* LSB auswerten, das kann nur schief gehen, darum hilft hier der "tödlich" doppelte Aufruf
Ich empfehle dir auch den Unterschied zwischen GetAsyncKeyState und GetKeyState zu lernen und dann Letzeres zu verwenden.
http://blog.m-ri.de/index.php/2008/0...-zu-verwenden/
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Okt 2017 um 12:30 Uhr)
  Mit Zitat antworten Zitat