CAPSLOCK-Status abfragen

Für allgemeine Fragen zur Programmierung mit PureBasic.
es_91
Beiträge: 411
Registriert: 25.01.2011 04:48

CAPSLOCK-Status abfragen

Beitrag 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.
Benutzeravatar
Sicro
Beiträge: 969
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: CAPSLOCK-Status abfragen

Beitrag von Sicro »

Schau mal in die WinAPI-Sammlung von RSBasic: http://www.rsbasic.de/winapi-library/
Bild
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
es_91
Beiträge: 411
Registriert: 25.01.2011 04:48

Re: CAPSLOCK-Status abfragen

Beitrag von es_91 »

Kannst Du mir nicht einen Tipp geben, wonach ich suchen muss?
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: CAPSLOCK-Status abfragen

Beitrag 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
a²+b²=mc²
Benutzeravatar
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

Beitrag von ts-soft »

Code: Alles auswählen

Define CapsState.w

CapsState = GetKeyState_(#VK_CAPITAL)
Debug CapsState
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.
Bild
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag 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. :allright:
Zuletzt geändert von CodeCommander am 18.01.2015 14:34, insgesamt 1-mal geändert.
~ DELETE ~
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: CAPSLOCK-Status abfragen

Beitrag 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>
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
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

Beitrag 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 :mrgreen:

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.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: CAPSLOCK-Status abfragen

Beitrag 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
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

@ts-soft :?: Funktioniert hier doch problemlos ~ 5.30 x64 ~ Dann stimmt mit deinem verkorksten System irgendwas nicht! :mrgreen:
Zuletzt geändert von CodeCommander am 18.01.2015 14:36, insgesamt 1-mal geändert.
~ DELETE ~
Antworten