如何在应用程序运行时分配用户选择的热键

时间:2012-05-20 03:02:44

标签: vb.net input hotkeys assign

我有一个使用热键的应用程序,这些热键由用户定义。它是2个键的组合,CTRL,ALT,SHIFT作为一个热键,F *功能键作为另一个键(例如CTRL + F1,ALT + F2或SHIFT + F8)如上所述,然后由用户选择一个全局的keyhook用于监听它们并触发一个事件。在我的应用程序中,我拥有以下所有功能键:

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

以下是我使用catch键组合的代码:

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

        'Return True
    End If

我还有两个组合框供用户在一个组合框中选择ALT,CTRL,SHIFT,在另一个组合框中选择功能键。然后我有一个按钮来激活钩子。

我的问题是这个;如何在应用程序运行时使用组合框中的用户信息在我的代码中设置相关的组合键?

感谢您花时间阅读本文。

1 个答案:

答案 0 :(得分:1)

  

如何在应用程序运行时使用组合框中的用户信息在我的代码中设置相关的组合键?

  1. 将表单的KeyPreview属性设置为true(这将捕获表单级别的所有击键)。例如:

    KeyPreview = true
    
  2. Form1_KeyDown事件中,您可以查找用户定义的组合键,即这些组合可以存储在List(Of KeyPresses)KeyPresses是一个类(提示:使用具有用户定义组合键的KeyEventArgs类作为灵感。

  3. 在运行时,用户保存按键组合后,当按键操作时,它会触发KeyDown事件,您将检查List(Of KeyPresses)并触发事件:

    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