Comment puis-je attribuer des raccourcis clavier choisis par l'utilisateur pendant que l'application est en cours d'exécution

StackOverflow https://stackoverflow.com//questions/10670470

  •  12-12-2019
  •  | 
  •  

Question

J'ai une application qui utilise des raccourcis clavier qui doivent être définis par l'utilisateur.Il s'agit d'une combinaison de 2 touches, soit CTRL, ALT, SHIFT comme une touche de raccourci et les touches de fonction F* comme l'autre (par ex.CTRL + F1, ALT + F2 ou SHIFT + F8) Comme indiqué, ceux-ci sont ensuite choisis par l'utilisateur avant qu'un keyhook global ne soit mis en place pour les écouter et déclencher un événement.Dans mon application, j'ai toutes mes touches de fonction comme suit :

  Public Const VK_F1 = &H70
  Public Const VK_F2 = &H71
  Public Const VK_F3 = &H72
  Public Const VK_F4 = &H73

etc...

Voici le code que j'utilise pour attraper les combinaisons de touches :

      If (Hookstruct.vkCode = VK_F5) And _
        CBool(Hookstruct.flags And _
        LLKHF_ALTDOWN) Then
        'TriggerEventHere

        'Return True
    End If

J'ai également deux zones de liste déroulante permettant à l'utilisateur de sélectionner ALT, CTRL, MAJ dans une zone de liste déroulante et les touches de fonction dans l'autre.J'ai alors un bouton qui active le crochet.

Ma question est la suivante :comment puis-je utiliser les informations utilisateur des listes déroulantes pour définir les combinaisons de touches pertinentes dans mon code lorsque l'application est en cours d'exécution ?

Merci d'avoir pris le temps de lire ceci.

Était-ce utile?

La solution

comment puis-je utiliser les informations utilisateur des listes déroulantes pour définir les combinaisons de touches pertinentes dans mon code lorsque l'application est en cours d'exécution ?

  1. Définir le formulaire KeyPreview propriété à true (cela capturera toutes les touches au niveau du formulaire).Par exemple.:

    KeyPreview = true
    
  2. Dans le Form1_KeyDown événement, vous pouvez rechercher les combinaisons de touches définies par l'utilisateur, c'est-à-direceux-ci pourraient être stockés dans un List(Of KeyPresses)KeyPresses est une classe (astuce :Utilisez le KeyEventArgs classe comme source d'inspiration) qui contient les combinaisons de touches définies par l'utilisateur.

  3. Au moment de l'exécution, une fois que les utilisateurs ont enregistré les combinaisons de touches, lorsqu'ils appuient sur des touches, le message se déclenche. KeyDown événement, et vous vérifierez le List(Of KeyPresses) et déclencher un événement :

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) _
       Handles MyBase.KeyDown
          ' Test for the Alt key
          If e.Alt = KeyPressesList(0).Alt Then
              MessageBox.Show("Alt was pressed")
          End If
    End Sub
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top