Sammanfattning
Dokumentationen för SetKeyboardState () säger att du inte kan använda detta API för att växla till NUM LOCK, CAPS LOCK och SCROLL LOCK. Du kan använda keybd_event () för att växla mellan NUM LOCK, CAPS LOCK och SCROLL LOCK-tangenten under Windows NT. Samma teknik fungerar för att växla CapsLock och SCROLL LOCK under Windows 95, men fungerar inte för NUM LOCK.
Mer information
Följande exempel program aktiverar NUM LOCK på om det är inaktiverat. Funktionen SetNumLock här simulerar genom att trycka på NUM LOCK-tangenten med keybd_event () med en virtuell VK_NUMLOCK. Det tar ett booleskt värde som anger om ljuset ska vara inaktiverat (falskt) eller på (sant). Samma metod kan användas för CAPS LOCK-tangenten (VK_CAPITAL) och SCROLL LOCK-tangenten (VK_SCROLL).
Exempel kod
/* Compile options needed: */ #include <windows.h> void SetNumLock( BOOL bState ) { BYTE keyState[256]; GetKeyboardState((LPBYTE)&keyState); if( (bState && !(keyState[VK_NUMLOCK] & 1)) || (!bState && (keyState[VK_NUMLOCK] & 1)) ) { // Simulate a key press keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); // Simulate a key release keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } void main() { SetNumLock( TRUE ); }