Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 122 fois - Téléchargée 31 fois
'Dans le Form : '-------------- Private Sub Form_Load() 'on crochete le clavier pour toujours savoir ce kil sy passe hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardLowLevelProc, App.hInstance, 0&) End Sub Private Sub Form_Unload(Cancel As Integer) 'quand on quitte UnhookWindowsHookEx hHook End Sub '----------------------------------- 'Dans un module: '-------------- Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public hHook As Long Public Const WH_KEYBOARD_LL = 13 Public Const VK_RWIN = &H5B Public Const VK_LWIN = &H5C Public Type HOOKSTRUCT vkCode As Long scanCode As Long flags As Long time As Long dwExtraInfo As Long End Type Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Any, Source As Any, ByVal Length As Long) Dim vk1 As Long Dim vk2 As Long Dim vk3 As Long Public Function KeyboardLowLevelProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim p As HOOKSTRUCT ' variable pour récupérer le vk code 'si idhook < 0 alors pas de traitement If idHook < 0 Then 'appeler le hook suivant KeyboardLowLevelProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam) Else 'copie la structure de lParam CopyMemory p, ByVal lParam, Len(p) vk1 = vk2 vk2 = vk3 vk3 = p.vkCode If vk1 = 162 And vk2 = 160 And vk3 = 65 Then MsgBox "Combinaison CTRL-SHIFT-A pressée au clavier" '( CTRL a le virtual key code 162 ' SHIFT a le virtual key code 160 ' A a le virtual key code 65 ) 'appeler le hook suivant KeyboardLowLevelProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam) End If End Function
Pourquoi ne pas simplement a chaque fois que une des trois touches est enfoncee verifier si les deux autres le sont aussi ?
De plus cela ne résoud pas le problème de la vitesse à laquelle doit être executée l'opération.
Sinon, j'avais oublié de noter :
- Code simple, clair, concis et bien commenté ; même si j'aurais préféré qu'il soit indenté (peut être à cause du site ?)
9/10 pour les petits défaut dont j'ai parlé plus haut.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.