Обобщена информация
Документацията за SetKeyboardState () правилно казва, че не можете да използвате този API, за да превключвате NUM LOCK, CAPS LOCK и SCROLL LOCK Keys. Можете да използвате keybd_event (), за да превключвате NUM LOCK, CAPS LOCK и SCROLL LOCK ключове под Windows NT. Същата техника работи за превключване на CAPS LOCK и SCROLL LOCK под Windows 95, но няма да работи за NUM LOCK.
Повече информация
Следната Примерна програма включва индикатора за NUM LOCK, ако е изключен. Функцията SetNumLock, дефинирана тук, симулира натискането на клавиша NUM LOCK, като използва keybd_event () с виртуален ключ на VK_NUMLOCK. Необходим е булева стойност, която указва дали светлината трябва да бъде изключена (FALSE), или на (TRUE). Същата техника може да се използва за клавиш CAPS LOCK (VK_CAPITAL) и клавиша SCROLL LOCK (VK_SCROLL).
Примерен код
/* 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 ); }