Samenvatting
In de documentatie voor SetKeyboardState () wordt de juiste aanduiding weergegeven dat u deze API niet kunt gebruiken om de NUM LOCK, CAPS LOCK en SCROLL LOCK keys te schakelen. U kunt keybd_event () gebruiken om de toets NUM LOCK, CAPS LOCK en SCROLL LOCK te schakelen onder Windows NT. Deze methode werkt voor het schakelen van CAPS LOCK en SCROLL LOCK onder Windows 95, maar werkt niet voor NUM LOCK.
Meer informatie
In het volgende voorbeeldprogramma wordt het getal-lampje voor de NUM LOCK ingeschakeld als deze functie is uitgeschakeld. Met de functie SetNumLock gedefinieerd, simuleert u op de toets NUM LOCK met behulp van keybd_event () met een virtuele sleutel van VK_NUMLOCK. Het duurt een Booleaanse waarde die aangeeft of het licht moet worden uitgeschakeld (ONWAAR) of aan (waar). U kunt dezelfde techniek gebruiken voor de toets CAPS LOCK (VK_CAPITAL) en de SCROLL LOCK-toets (VK_SCROLL).
Voorbeeld van code
/* 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 ); }