Ajouter n'importe quel raccourci à vos menus (hook clavier)

Soyez le premier à donner votre avis sur cette source.

Vue 6 853 fois - Téléchargée 744 fois

Description

Salut,

Alors cette source permet d'ajouter à n'importe quel menu standard de VB n'importe quel raccourci personnalisé.

Utile dans pleins de cas, parce que les raccourcis qui sont permis par VB sont très très limités !!

Dans cet exemple, il est possible de définir des raccourcis de type :
Ctrl ET/OU Shift ET/OU Alt ET Touche
Touche peut être A,B,C...,F1,F2,Tab,Left,Fin,Suppr...
N'importe quelle touche quoi !

Vous pouvez donc définir des raccourcis de type :
Alt + Flèche gauche
Ctrl + Shift + Tab
F12
Shift + A
... etc

A (éventuellement) adapter pour plus de possibilités (mais je crois que c'est AMPLEMENT suffisant).

Enjoy !!!!!

Note : j'ai fait çà à l'arrache ce soir, peut être qu'il y a des erreurs :-)
Note 2 : utilisation d'interfaces, donc peut être pas super optimisé car je suis pas expert là dedans ^^
Note 3 : j'ai pas cherché si çà existait déjà, désolé si c'est le cas... mais çà m'étonnerait :-)
@+

Source / Exemple :


' A mettre en début de Form
Implements IShortCut

Private Sub AddShortCuts()
    ' Ajout des raccourcis
    Call AddShortcutToMenu("Open", Me.mnuOpen, "Ctrl+Shift+O", Me, vbCtrlMask, vbShiftMask, vbKeyO)
    Call AddShortcutToMenu("Previous", Me.mnuPrev, "Alt+Flèche gauche", Me, vbAltMask, , vbKeyLeft)
    Call AddShortcutToMenu("Next", Me.mnuNext, "Alt+Flèche droite", Me, vbAltMask, , vbKeyRight)
    Call AddShortcutToMenu("About", Me.mnuAbout, "Ctrl+Alt+F1", Me, vbCtrlMask, vbAltMask, vbKeyF1)
    Call AddShortcutToMenu("Save", Me.mnuSave, "Shift+S", Me, vbShiftMask, , vbKeyS)
    Call AddShortcutToMenu("Topic", Me.mnuTopic, "F1", Me, , , vbKeyF1)
    Call AddShortcutToMenu("Close", Me.mnuClose, "Alt+F4", Me, vbAltMask, , vbKeyF4)
End Sub

' C'est ici que l'on récupère les activations des raccourcis
Private Sub IShortCut_ShortCutActivated(shortcutTag As String)

    Select Case shortcutTag
        Case "Open"
            Call mnuOpen_Click
        Case "Next"
            Call mnuNext_Click
        Case "Previous"
            Call mnuPrev_Click
        Case "About"
            Call mnuAbout_Click
        Case "Save"
            Call mnuSave_Click
        Case "Topic"
            Call mnuTopic_Click
        Case "Close"
            Call mnuClose_Click
    End Select
    
End Sub

Conclusion :


Et voilà !

Commentaires, notes, critiques sont les bienvenus.
@+

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
MAJ :
- bug corrigé
- activation du raccourci que dans le cas où la form est bien celle qui a le focus

@+
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
Oki !
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Salut,

il sert à implémenter la classe IShortCut.

En gros, dans le code de notre form, on a çà :
Private Sub IShortCut_ShortCutActivated(shortcutTag As String)

qui est une méthode de l'interface. Pour qu'elle soit accessible dans notre form, il faut donc faire le Implements.

@+
Messages postés
2493
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1
Il sert à quoi, le "Implements" ?
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Bon, je me rend compte que j'ai oublié un truc : vérifier que la form est active avant de valider le raccourci.

Manque juste un appel à une fonction de l'API Win32 et un test dans la méthode KeyboardFilter.


J'avais pas vu çà non plus http://www.vbfrance.com/codes/EVENEMENT-RACCOURCIS-CLAVIER_7330.aspx ,Renfield a décidément codé beaucoup de chose ^^
M'enfin, la méthode est différente.

@+

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.