Rezime
Dokumentacija stanja za Setkejstate () ispravno kaže da ne možete da koristite ovaj API za uključivanje preklopnih tastera NUM LOCK, CAPS LOCK i SCROLL LOCK. Možete da koristite keybd_event () da biste preklopili tastere NUM LOCK, CAPS LOCK i SCROLL LOCK u okviru programa Windows NT. Ista tehnika funkcioniše za preklopne tastere CAPS LOCK i SCROLL LOCK u okviru operativnog sistema Windows 95, ali neće raditi za NUM LOCK.
Više informacija
Sledeći probni program uključuje svetlo NUM LOCK ako je isključen. Funkcija SetNumLock definisana ovde simulira pritisak na taster NUM LOCK, koristeći keybd_event () sa virtuelnim ključem VK_NUMLOCK. Potrebna je logička vrednost koja označava da li bi svetlost trebalo da bude isključena (FALSE) ili uključena (TRUE). Ista tehnika može se koristiti za taster CAPS LOCK (VK_CAPITAL) i taster SCROLL LOCK (VK_SCROLL).
Uzorak koda
/* 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 ); }