Rajoutez des raccourcis clavier dans vos programmes !!!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 851 fois - Téléchargée 31 fois

Contenu du snippet

ce code permet d'intercepter les racourcis clavier _ voici un exemple qui retrouve la combinaison CTRL SHIFT A tapée au clavier _

Source / Exemple :


'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

Conclusion :


voilà j'ai bricolé ça pour implémenter le racourci clavier dans un soft de capture d'écran _ comme ça je peus faire des captures d'écran par simple pression dune combinaison de touches pendant un jeu vidéo par exemple

A voir également

Ajouter un commentaire

Commentaires

bouv
Messages postés
1429
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Oui une source a été déposée avec cette API il y a qq jour...
soldier8514
Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1 -
on peut le faire avec GetKeyState , suffit 2 modifier 2 ou 3 lignes
draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010
-
Salut,

Pourquoi ne pas simplement a chaque fois que une des trois touches est enfoncee verifier si les deux autres le sont aussi ?
soldier8514
Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1 -
je pense en faire un ocx _faut dire que mettre 3 lignes de codes dans une fiche c'est déjà trop pour moa ... alors si je peus réduire à 2... ;)
bouv
Messages postés
1429
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Oui je suis bien d'accord, mais tu sais des fois on fait les choses tellement vite que pour CTRL+ALT+A on peut inverses l'ordre entre CTRL et ALT (ce qui pour les raccourcis Windows ne pose pas de problème).

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.