Sažetak
Dokumentacija za SetKeyboardState () ispravno kaže da ne možete koristiti ovaj API da biste uključili prekidač NUM LOCK, CAPS LOCK i SCROLL LOCK. Keybd_event () možete koristiti za uključivanje prekidača NUM LOCK, CAPS LOCK i SCROLL LOCK u odjeljku Windows NT. Ista tehnika funkcionira i za preklapajući CAPS LOCK i SCROLL LOCK u sustavu Windows 95, ali neće funkcionirati za NUM LOCK.
Dodatne informacije
Sljedeći Ogledni program pretvara svjetlo NUM LOCK ako je isključeno. Funkcija SetNumLock definirana ovdje simulira pritiskom na tipku NUM LOCK, pomoću keybd_event () s virtualnim ključem VK_NUMLOCK. Potrebna je Booleova vrijednost koja upućuje na to je li svjetlo potrebno isključiti (FALSE) ili uključeno (istinito). Ista tehnika može se koristiti za tipku CAPS LOCK (VK_CAPITAL) i tipku SCROLL LOCK (VK_SCROLL).
Ogledni kod
/* 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 ); }