Résumé
La documentation de SetKeyboardState () indique correctement que vous ne pouvez pas utiliser cette API pour activer ou désactiver le verrouillage numérique, le verrouillage des MAJUSCULEs et les touches Arrêt défil. Vous pouvez utiliser les keybd_event () pour activer ou désactiver le verrouillage du pavé numérique, le verrouillage des MAJUSCULEs et les touches de défilement sous Windows NT. La même technique est utilisée pour activer/désactiver la touche VERR. Maj et le verrouillage de défilement sous Windows 95, mais il ne fonctionne pas avec le verrouillage numérique.
Informations supplémentaires
Le programme d’exemple suivant active la fonction de verrouillage du pavé numérique s’il est désactivé. La fonction SetNumLock définie ici simule une pression sur la touche VERR. NUM, à l’aide de keybd_event () avec une clé virtuelle de VK_NUMLOCK. Elle prend une valeur booléenne qui indique si la lumière doit être désactivée (faux) ou activée (TRUE). La même technique peut être utilisée pour la touche Verrouillage majuscule (VK_CAPITAL) et la touche Arrêt défil (VK_SCROLL).
Exemple de 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 ); }