Resumo

A documentação do SetKeyboardState() diz corretamente que não é possível utilizar esta API para alternar as teclas NUM LOCK, CAPS LOCK e SCROLL LOCK. Pode utilizar keybd_event para alternar as teclas NUM LOCK, CAPS LOCK e SCROLL LOCK no Windows NT. A mesma técnica funciona para o bloqueio de caps lock e SCROLL LOCK no Windows 95, mas não funcionará para UM LOCK.

Mais Informações

O programa de amostras a seguir acende a luz NUM LOCK se estiver desligada. A função SetNumLock aqui definida simula a pressão da tecla NUM LOCK, utilizando keybd_event() com uma chave virtual de VK_NUMLOCK. É preciso um valor booleano que indique se a luz deve ser desligada (FALSO) ou acesa (TRUE). A mesma técnica pode ser utilizada para a tecla CAPS LOCK (VK_CAPITAL) e para a chave DE BLOQUEIO DE DESLOCAÇÃO (VK_SCROLL).

Código de Amostra

   /* 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 );   }

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.