NumLock aktivieren und deaktivieren
-
hi,
nach vielen Stunden google und forumsuche frage ich besser direekt nach.
ich schreibe ein programm das die numlock aktiviert und zum leuchten bringt.
anschliessend will ich 20 sekunden warten und die numlock wieder deaktivieren also die LED ausschalten.case WM_KEYDOWN: if(KEYDOWN(VK_SPACE)) { keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, 0); } break;
-
#include <Windows.h> void SetNumLockStatus(bool fState) { BYTE byKeybrdState[256]; GetKeyboardState(&byKeybrdState); if((bState && !(byKeybrdState[VK_NUMLOCK] & 1)) || (!bState && (byKeybrdState[VK_NUMLOCK] & 1))) { // Ein Drücken der 'Numlock-Taste' simulieren: keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0); // Ein Loslassen der 'Numlock-Taste' simulieren: keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } int main() { SetNumLockStatus(true); return (0); }
-
vielen Dank für die schnelle Antwort.
Ich habe abe rnoch ein kleines Problem:
Mit der WM_KEYDOWN ^reagiere ich auf den Tastendruck:
case WM_KEYDOWN: if(KEYDOWN(VK_SPACE)) { keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, 0); Sleep(1000); keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } break;
Ich habe folgendes Problem:
Wenn ich die Taste Space drücke schaltet sich die Numlock ein und wenn ich Sie ein zweites mal drücke schaltet Sie wieder aus.Will will jedoch das durch den Tastendruck die NumLock einschaltet und nach einer kurzen Verzögerung ausschaltet.
Mit WM_KEYUP: konnte ich die NumLock ebenfalls nicht auschalten erst nach dem eben genannten zweiten drücken der Taste.
Hat jemand ev einen Rat? Bin kein Experte und würde mich sehr auf eine Antwort freuen.
-
keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
simuliert das drücken der Num-Lock Taste,keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
das Loslassen. Das System schaltet bei jedem Drücken den Status der numerischen Tastatur um.Das bedeutet im Endeffekt, daß du zweimal Drücken+Loslassen simulieren mußt, um die Lampe aufblinken zu lassen (entweder mit einem Sleep() dazwischen oder das zweite Drücken aktivierst du per Timer):
//NumLock ein keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, 0); keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); //Pause Sleep(1000); //NumLock aus keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, 0); keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
-
Vielen herzlichen Dank es hat wunderbar funktioniert. Eigentlich nichts weiter als logisch aber eben....
Nochmals Danke!