Загальні відомості
Документація для Setkeybobostate () вірно говорить про те, що цей API не можна використовувати для перемикання клавіш NUM LOCK, CAPS LOCK і SCROLL LOCK. За допомогою keybd_event () можна перемикати клавіші NUM LOCK, CAPS LOCK, а також ПРОКРУЧУВАТИ кнопки блокування в розділі Windows NT. Той самий метод працює для блокування несумісних CAPS LOCK і прокручування під Windows 95, але він не працюватиме для NUM LOCK.
Додаткові відомості
У наведеному нижче прикладі програма вмикає індикатор NUM LOCK, якщо його вимкнуто. Функція SetNumLock, визначена тут, імітує натискання клавіші NUM LOCK, використовуючи keybd_event () з віртуальним ключем VK_NUMLOCK. Це логічне значення, яке вказує на те, чи має воно бути вимкнутим (FALSE) або на (TRUE). Цю саму техніку можна використовувати для ключа CAPS LOCK (VK_CAPITAL), а також клавіш блокування прокрутки (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 ); }