Riepilogo

La documentazione per SetKeyboardState () dice correttamente che non è possibile usare questa API per attivare o disattivare i tasti BLOC NUM, BLOC MAIUSC e BLOC SCORR. È possibile usare keybd_event () per attivare o disattivare i tasti BLOC NUM, BLOC MAIUSC e BLOC SCORR in Windows NT. La stessa tecnica funziona per l'attivazione di BLOC MAIUSC e BLOC SCORR in Windows 95, ma non funzionerà per BLOC NUM.

Ulteriori informazioni

Il programma di esempio seguente disattiva la luce di blocco NUM se è disattivata. La funzione SetNumLock definita qui simula la pressione del tasto BLOC NUM, usando keybd_event () con una chiave virtuale di VK_NUMLOCK. Prende un valore booleano che indica se la luce deve essere disattivata (FALSE) o attivata (TRUE). La stessa tecnica può essere usata per il tasto BLOC MAIUSC (VK_CAPITAL) e per il tasto BLOC SCORR (VK_SCROLL).

Codice di esempio

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

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.