1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Public Function EtatTouche(Optional ByVal Activation As Boolean = True, Optional ByVal Touche As Long = VK_NUMLOCK)
'======================================================================
' Description
'--------------------------
' Active (par défaut) ou désactive (si précisé) le verrouillage de la touche 'Touche'
'
'======================================================================
Dim bytKeys(255) As Byte
Dim bnumLockOn As Boolean
Static VersionSystème As Integer
'======================================================================
' Récupération de la situation actuelle des touches
GetKeyboardState bytKeys(0)
If VersionSystème = 0 Then
' Identifie la version courante du système
VersionSystème = MonOsVersion()
End If
If VersionSystème >= 5 Then ' a partir d'XP uniquement
' C'est en comparant à 1 qu'on obtient le bon résultat et non à &H80
bnumLockOn = ((bytKeys(Touche) And &H1) = &H1) ' Vrai si NumLock actif
If bnumLockOn <> Activation Then 'if current state <> requested state
'Simule l'appui sur la touche
keybd_event Touche, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simule le relâchement de la touche
keybd_event Touche, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
DoEvents
End If
End If
EtatTouche = true
end Function |
Partager