Súhrn
Dokumentácia pre SetKeyboardState () správne hovorí, že toto rozhranie API nie je možné použiť na prepínanie medzi klávesmi NUM LOCK, CAPS LOCK a SCROLL LOCK. Keybd_event () môžete použiť na prepínanie medzi klávesmi NUM LOCK, CAPS LOCK a SCROLL LOCK v systéme Windows NT. Rovnaká metóda funguje pri zapnutom prepínači CAPS LOCK a SCROLL LOCK v systéme Windows 95, ale nebude to fungovať na NUM LOCK.
Ďalšie informácie
V nasledujúcom ukážkovom programe sa kontrolka NUM LOCK zapne, ak je vypnutá. Funkcia SetNumLock definovaná tu simuluje stlačenie klávesu NUM LOCK pomocou keybd_event () s virtuálnym kľúčom VK_NUMLOCK. Vykoná sa Boolovská hodnota, ktorá označuje, či má byť svetlo vypnuté (FALSe) alebo zapnuté (TRUE). Tú istú techniku je možné použiť pre kláves CAPS LOCK (VK_CAPITAL) a kláves SCROLL LOCK (VK_SCROLL).
Vzorový kód
/* 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 ); }