Langage :
VB6
,
VBA
Date ajout :
21/08/2008
Posté par
PCPT
[
Liste]
DateMAJ :
14/09/2008
' DANS UN MODULE STANDARD
Option Explicit
'
Private Const VK_CAPITAL As Long = &H14
'
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
'
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
'
Dim tKB As KeyboardBytes
'
'
Public Function KeyMaj_TurnON() As Boolean
' on ne fait rien si déjà ON
If KeyMaj_IsON Then
KeyMaj_TurnON = True
Else
' par le test avant, le tableau est à jour. on met à VRAI
tKB.kbByte(VK_CAPITAL) = 1
' on applique
KeyMaj_TurnON = SetKeyboardState(tKB)
End If
End Function
'
'
Public Function KeyMaj_TurnOFF() As Boolean
' on ne fait rien si déjà OFF
If KeyMaj_IsON Then
' par le test au dessus, le tableau est à jour. on met à FAUX
tKB.kbByte(VK_CAPITAL) = 0
' on applique
KeyMaj_TurnOFF = SetKeyboardState(tKB)
Else
KeyMaj_TurnOFF = True
End If
End Function
'
'
Public Function KeyMaj_IsON() As Boolean
' récupe l'état des touches du clavier
If GetKeyboardState(tKB) Then KeyMaj_IsON = tKB.kbByte(VK_CAPITAL)
End Function
Remarque :
le code est le même pour la touche NUM ou SCROLL, par ces constantes :
Private Const VK_NUMLOCK As Long = &H90&
Private Const VK_SCROLL As Long = &H91&
-----------------------
les 3 fonctions peuvent être simplement appelées sans vérifier le retour....
Call KeyMaj_TurnON
-----------------------
NB : les voyants du clavier ne sont pas altérés, ce code ne concerne que l'application en cours, une zone de texte par exemple....
ce code change le comportement du clavier, pas l'état réel des touches. pour cela il faut passer par keybd_event