1

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

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

等等等等……

这是我使用捕获组合键的代码:

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

        'Return True
    End If

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

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

感谢您抽时间阅读。

4

1 回答 1

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
    
于 2012-05-20T04:45:36.313 回答