CAPSLOCK-Status abfragen
CAPSLOCK-Status abfragen
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.
Schonmal schönen Dank für die Antwort!
es_91.
Re: CAPSLOCK-Status abfragen
Schau mal in die WinAPI-Sammlung von RSBasic: http://www.rsbasic.de/winapi-library/

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Re: CAPSLOCK-Status abfragen
Kannst Du mir nicht einen Tipp geben, wonach ich suchen muss?
Re: CAPSLOCK-Status abfragen
also ich persönlich würde bei "Maus und Tastatur" suchen. Und siehe da: Da ist es ja!es_91 hat geschrieben:Kannst Du mir nicht einen Tipp geben, wonach ich suchen muss?
Direkt bei "Num Lock, Caps Lock, Scroll Lock ermitteln"
Grüße ... Peter
a²+b²=mc²
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: CAPSLOCK-Status abfragen
Code: Alles auswählen
Define CapsState.w
CapsState = GetKeyState_(#VK_CAPITAL)
Debug CapsStatePureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- CodeCommander
- Beiträge: 213
- Registriert: 02.03.2014 16:06
@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. 
Zuletzt geändert von CodeCommander am 18.01.2015 14:34, insgesamt 1-mal geändert.
~ DELETE ~
- man-in-black
- Beiträge: 362
- Registriert: 21.08.2006 17:39
Re: CAPSLOCK-Status abfragen
<OT>
Ich weis, ich bin mit meinem Post auch nicht besser, aber SPART EUCH EINFACH SOLCHE KOMMENTARE! DAFÜR SIND PNs!
</OT>
Ich weis, ich bin mit meinem Post auch nicht besser, aber SPART EUCH EINFACH SOLCHE KOMMENTARE! DAFÜR SIND PNs!
</OT>
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: CAPSLOCK-Status abfragen
@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
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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: CAPSLOCK-Status abfragen
Das sollte sicherer sein:
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_().
Siehe auch:
- GetKeyState function > Return value
- GetAsyncKeyState function
Code: Alles auswählen
CapsState = GetKeyState_(#VK_CAPITAL) & 1
Debug CapsStateCAPS 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- GetKeyState function > Return value
- GetAsyncKeyState function
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- CodeCommander
- Beiträge: 213
- Registriert: 02.03.2014 16:06
@ts-soft
Funktioniert hier doch problemlos ~ 5.30 x64 ~ Dann stimmt mit deinem verkorksten System irgendwas nicht! 
Zuletzt geändert von CodeCommander am 18.01.2015 14:36, insgesamt 1-mal geändert.
~ DELETE ~