Ich kriegs einfach nicht hin! Wie kann ich in PureBasic den Status der CAPS-Lock-Taste prüfen? Ich möchte nur wissen ob CAPS-Lock eingeschaltet ist wenn ich mein Programm starte oder ob die Taste nicht aktiviert ist. Gibt es dazu eine Möglichkeit und kann mir jemand helfen?
(Es geht bei meinem Problem wirklich NUR um die CAPS-LOCK-Taste. Ich frage auch andere Tasten ab, die funktionieren alle ohne Problem.)
Die anderen Tasten habe ich in folgender Form abgefragt:
Du solltest das ganze nicht per IF GetAsyncKeyState_(#VK_...) = -32767 machen, da es auch andere Rückgabewerte haben könnte. Mach das über IF GetAsyncKeyState_(#VK_...) <> 0
PS: Codeeinrückung bitte benutzen!
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
@DarkDragon: Ich glaube das war kein Tipp der zum Erfolg führt (obwohl die Bitte um CODE-Einrückung natürlich der Übersichtlichkeit dient). Soweit ich SORUS verstanden habe will er nicht wissen ob die Caps-Lock-Taste gedrückt ist sondern welchen Zustand Caps-Lock zum Start seines Programms hat.
If (GetKeyState_(#VK_CAPITAL)=1)
MessageRequester("Caps-Lock","...ist aktiv!",#PB_MessageRequester_Ok)
Else
MessageRequester("Caps-Lock","...ist NICHT aktiv!",#PB_MessageRequester_Ok)
EndIf
Zuletzt geändert von real am 20.11.2004 11:33, insgesamt 1-mal geändert.
Wenn Ihr hier so schnell so gute Antworten zur Hand habt dann komm ich doch auch gleich noch mit einem zweiten "Problem".
Mit GetAsyncKeyState lässt sich zwar feststellen welche Taste gedrückt wird, aber für die Gross- und Kleinschreibung beziehungsweise die Mehrfach-Belegung der Tasten muss mit IF programmiert werden.
If GetAsyncKeyState_(#VK_A)=-32767
If GetAsyncKeyState_(#VK_SHIFT)<>0
UCase(KeyIn.s)
Debug "'A' was pressed"
Else
LCase(KeyIn.s)
Debug "'a' was pressed"
EndIf
EndIf
Funzt zwar problemlos, ist aber ein wenig aufwendig, vor allem wenn man bedenkt wie viele Tasten eine Tastatur hat *g*. Gibt es hier vielleicht einen schnelleren Weg?
Zuletzt geändert von SORUS am 20.11.2004 11:42, insgesamt 1-mal geändert.
Schreib uns doch einfach, was Du vorhast? Willst Du die komplette Tastatur abfragen, oder nur Buchstaben/Zahlen?!
SORUS: "Der Code ist eingerückt... dann drück ich auf Senden und schon fehlt die Einrückung..."
Den Code rückst Du mit [code] ein und hebst die Einrückung mit [/code] wieder auf. (oder Du nutzt den Button über dem Nachrichtentext)
Zuletzt geändert von real am 20.11.2004 11:37, insgesamt 1-mal geändert.