Rezumat
Documentația pentru SetKeyboardState () spune corect că nu puteți utiliza acest API pentru a comuta tastele NUM LOCK, CAPS LOCK și SCROLL LOCK. Puteți utiliza keybd_event () pentru a comuta tastele NUM LOCK, CAPS LOCK și SCROLL LOCK sub Windows NT. Aceeași tehnică funcționează pentru basculând CAPS LOCK și SCROLL LOCK sub Windows 95, dar nu va funcționa pentru NUM LOCK.
Mai multe informații
Următorul exemplu de program transformă tasta NUM LOCK aprinsă dacă este dezactivată. Funcția SetNumLock definită aici simulează apăsarea tastei NUM LOCK, utilizând keybd_event () cu o cheie virtuală de VK_NUMLOCK. Este nevoie de o valoare booleană care indică dacă lumina trebuie dezactivată (FALSE) sau activată (TRUE). Aceeași tehnică poate fi utilizată pentru tasta CAPS LOCK (VK_CAPITAL) și tasta SCROLL LOCK (VK_SCROLL).
Exemplu de cod
/* 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 ); }