Sammendrag
Dokumentasjonen for SetKeyboardState() på riktig måte, sier at du ikke kan bruke denne APIen til å veksle mellom tastene NUM LOCK, CAPS LOCK og SCROLL LOCK.
Du kan bruke keybd_event() til å veksle mellom NUM LOCK, CAPS LOCK og SCROLL LOCK nøklene under Windows NT. Den samme teknikken fungerer for aktivering av CAPS LOCK og SCROLL LOCK under Windows 95, men det fungerer ikke for NUM LOCK.
Hvis du vil ha mer informasjon
Følgende eksempel programmet aktiverer NUM LOCK-lampen hvis den er slått av. SetNumLock-funksjon som er definert her simulerer trykke NUM LOCK-tasten ved hjelp av keybd_event() med en virtuell nøkkel for VK_NUMLOCK. Det tar en boolsk verdi som angir om lyset bør være deaktivert (USANN) eller på (TRUE).
Den samme teknikken kan brukes for CAPS LOCK-tasten (VK_CAPITAL) og SCROLL LOCK-tasten (VK_SCROLL).
Eksempelkode
/* 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 );
}