GetKeyState_() reagiert wie ein Taster

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

GetKeyState_() reagiert wie ein Taster

Beitrag von Tombi »

Liebe Community,
habe momentan ein Problem.

Würde gerne eine Taste mit GetKeyState_() abfragen
Z.b. die Rückgängig-Taste

Code: Alles auswählen

If GetKeyState_($08) > 0
   debug "enter gedrückt"
EndIf
Nunja... wenn ich nun die Taste drücke registiert er am laufendem Band das die Taste gedrückt ist.
Auch wenn ich die Taste loslasse, registriert er noch einen Tastendruck...
Erst bei wiederholten Drücken der Taste wird das ganze gestoppt.

Ich wollte aber keine "An/Ausschalt" Funktion meiner Taste geben, sondern einfach nur abfragen,
ob die Taste IN DIESEM MOMENT gedrückt wird.

Hoffe Ihr könnt mir weiterhelfen.


Und nein, "GetAsyncKeyState" möchte ich nicht verwenden !


MFG,
Tombi
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: GetKeyState_() reagiert wie ein Taster

Beitrag von Kevin »

so gehts:

Code: Alles auswählen

Repeat
 
 state=GetKeyState_(#VK_RETURN)
 If state<>0 And state<>1
  Debug "return"
 EndIf
 
 Delay(100)
 
ForEver
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Re: GetKeyState_() reagiert wie ein Taster

Beitrag von freak »

MSDN hat geschrieben:The return value specifies the status of the specified virtual key, as follows:
  • If the high-order bit is 1, the key is down; otherwise, it is up.
  • If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
So ist richtig:

Code: Alles auswählen

If GetKeyState_(#VK_RETURN) & $8000
  ; ...
EndIf
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Re: GetKeyState_() reagiert wie ein Taster

Beitrag von Tombi »

freak hat geschrieben:
MSDN hat geschrieben:The return value specifies the status of the specified virtual key, as follows:
  • If the high-order bit is 1, the key is down; otherwise, it is up.
  • If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
So ist richtig:

Code: Alles auswählen

If GetKeyState_(#VK_RETURN) & $8000
  ; ...
EndIf
Irgendwas stimmt da nicht. Funktioniert fast nie.
Und wenn dann nur im Zusammenhang mit einer normalen Taste...

Bitte nochmal testen?!
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Re: GetKeyState_() reagiert wie ein Taster

Beitrag von Tombi »

Sry wegen Doppelpost.
Muss sein, damit auch jeder das jetzt liest, der den oberen Beitrag schon gelesen hat
(editieren bringt nicht unbedingt viel, da es den Thread nicht pusht..)

Habe das Problem ein wenig lokalisieren können.

Wenn ich den genannten Code mit VM_KEYUP abrufe, ist alles kein Problem...

Nur möchte ich den genannten Code mit VM_KEYDOWN abrufen (benutze ich auch für die anderen Tasten wie z.b. ASDIASDP ohne weitere Probleme).

Nur reagiert das ganze nur richtig, wenn ich die Taste gedrückt halte. Dann wird es ab dem zweiten richtig angezeigt...
Beim normalen tippen der Taste wird dies nicht registriert...

MFG,
Tombi
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Antworten