Seite 1 von 2
CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 13:37
von es_91
Hi. Wie kann ich den Status (aktiviert/nicht aktiviert) der CAPSLOCK-Taste mit PB abfragen?
Schonmal schönen Dank für die Antwort!
es_91.
Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 15:13
von Sicro
Schau mal in die WinAPI-Sammlung von RSBasic:
http://www.rsbasic.de/winapi-library/
Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 17:37
von es_91
Kannst Du mir nicht einen Tipp geben, wonach ich suchen muss?
Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 17:44
von Kiffi
es_91 hat geschrieben:Kannst Du mir nicht einen Tipp geben, wonach ich suchen muss?
also ich persönlich würde bei "Maus und Tastatur" suchen. Und siehe da: Da ist es ja!
Direkt bei "Num Lock, Caps Lock, Scroll Lock ermitteln"
Grüße ... Peter
Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 18:22
von ts-soft
Code: Alles auswählen
Define CapsState.w
CapsState = GetKeyState_(#VK_CAPITAL)
Debug CapsState
Verfasst: 06.09.2014 18:46
von CodeCommander
@ts-soft: Mein Gott das war aber echt unnötig. Lösung wurde schon genannt. Kaust du ihm auch das Essen vor? Wenn er es nicht findet obwohl es meiner Meinung nach leicht zu finden ist dann hat er pech gehabt und er hat es nicht verdient, eine Lösung zu bekommen. Schreib doch gleich sein Programm dann ist er noch glücklicher und er braucht nichts machen.

Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 18:53
von man-in-black
<OT>
Ich weis, ich bin mit meinem Post auch nicht besser, aber SPART EUCH EINFACH SOLCHE KOMMENTARE! DAFÜR SIND PNs!
</OT>
Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 18:54
von ts-soft
@CodeCommander
Tja, wenn der Code in der WinAPI Library immer funktionieren würde. Leider ist der Code
nur für x86 geeignet und deshalb nicht so empfehlenswert. Und jetzt such mal den
Unterschied zu meinem Code
Gruß
Thomas
Re: CAPSLOCK-Status abfragen
Verfasst: 06.09.2014 19:14
von Danilo
Das sollte sicherer sein:
Code: Alles auswählen
CapsState = GetKeyState_(#VK_CAPITAL) & 1
Debug CapsState
Nur im niedrigsten Bit steht der Umschaltstatus von CAPS LOCK. Im höchsten Bit des Words steht noch ob die Taste momentan gedrückt ist.
CAPS LOCK kann also aus sein, aber die Taste ist noch gedrückt. Dann bekommt man ein falsches Ergebnis, da das höchstwertige Bit des
Words gesetzt ist. Einfach mal ohne das "& 1" kompilieren, während man CAPS LOCK noch gedrückt hält.
GetKeyState_() gibt aber auch keine Echtzeit-Informationen zurück, sondern ändert sich mit der
Abarbeitung der Nachrichten im Nachrichtenpuffer. Das heisst, wenn man eine Nachricht bekommt (WM_KEYDOWN usw.),
dann gibt GetKeyState_() den Status der Taste zurück, als die Nachricht generiert wurde. Der aktuelle Status der
Taste kann schon wieder anders sein. Echtzeit-Informationen liefert GetAsyncKeyState_().
Code: Alles auswählen
CapsState = GetAsyncKeyState_(#VK_CAPITAL) & 1
Debug CapsState
Siehe auch:
-
GetKeyState function > Return value
-
GetAsyncKeyState function
Verfasst: 06.09.2014 19:16
von CodeCommander
@ts-soft

Funktioniert hier doch problemlos ~ 5.30 x64 ~ Dann stimmt mit deinem verkorksten System irgendwas nicht!
