Kokkuvõte
SetKeyboardState () dokumentatsioonis on õigesti öeldud, et te ei saa kasutada seda API-d, et lülitada välja NUM LOCK, CAPS LOCK ja SCROLL LOCK võtmed. Saate kasutada keybd_event () funktsiooni NUM LOCK, CAPS LOCK ja SCROLL LOCK (Windows NT) aktiveerimiseks. Sama meetod töötab lülitamine CAPS LOCK ja SCROLL LOCK all Windows 95, kuid see ei tööta NUM LOCK.
Lisateave
Kui see on välja lülitatud, muutub Järgmine näidis "NUM LOCK Light". Siin määratletud funktsioon SetNumLock simuleerib klahvi NUM LOCK vajutamist, kasutades keybd_event () VK_NUMLOCK virtuaalset võtit. See võtab ette loogikaväärtus, mis näitab, kas valgus tuleks välja lülitada (FALSE) või (TRUE). Sama tehnikat saab kasutada ka CAPS LOCK (VK_CAPITAL) ja SCROLL LOCK (VK_SCROLL).
Proovi kood
/* 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 ); }