Suvestinė
"Setklavišardstate" dokumentacijoje () teisingai sakoma, kad negalite naudoti šio API, kad perjungtumėte NUM LOCK, CAPS LOCK ir SCROLL LOCK klavišus. Galite naudoti keybd_event (), kad perjungtumėte NUM LOCK, CAPS LOCK ir SCROLL LOCK raktus po "Windows NT". Tas pats būdas tinka didžiųjų raidžių užraktai ir slinkties užraktai pagal "Windows" 95, bet neveiks NUM LOCK.
Daugiau informacijos
Toliau pateiktas programos pavyzdys paverčia NUM LOCK Light, jei ji išjungta. Čia aprašyta funkcija SetNumLock modeliuoja klavišą NUM LOCK, naudojant keybd_event () su virtualiu VK_NUMLOCK. Reikia Bulio logikos reikšmės, nurodanti, ar šviesa turi būti išjungta (neteisinga), ar įjungta (TRUE). Tą patį būdą galima naudoti "CAPS LOCK" klavišui (VK_CAPITAL) ir slinkties užrakto klavišui (VK_SCROLL).
Kodo pavyzdys
/* 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 ); }