vb.net hotkey注册2个修饰符

时间:2016-08-06 22:09:39

标签: vb.net hotkeys registerhotkey

我正在开发一个项目,我需要注册一个热键,任何我跑到墙上试图弄清楚如何向热键注册商添加另一个字母修饰符。例如,CTRL + SHIFT,A + B.到目前为止,我正在运行的代码有效,但它只接受一个字母修饰符。有谁能告诉我哪里出错了?我希望它像添加'And'操作符或'+'一样简单,将它连接成一个字符串。这是我所拥有的一个例子。

Imports System.Runtime.InteropServices

Public Class Form1

Public Const MOD_ALT As Integer = &H1
Public Const MOD_SHIFT As Integer = &H4
Public Const MOD_CTRL As Integer = &H2
Public Const MOD_WIN As Integer = &H8
Public Const WM_HOTKEY As Integer = &H312

<DllImport("User32.dll")>
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
End Function

<DllImport("User32.dll")>
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    RegisterHotKey(Me.Handle, 100, MOD_ALT Or MOD_SHIFT, Keys.A)'alt+shift,A

End Sub

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If m.Msg = WM_HOTKEY Then
        Dim id As IntPtr = m.WParam
        Select Case (id.ToString)
            Case "100"
                MessageBox.Show("You pressed alt+shift, A", "Hello", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End Select

    End If
    MyBase.WndProc(m)
End Sub

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    UnregisterHotKey(Me.Handle, 100)
End Sub

End Class

就像我说的那样,到目前为止,CTRL + SHIFT,A。我想做的是修改它以接受一个额外的修饰键,如CTRL + SHIFT,A + B.提前感谢您的帮助!

0 个答案:

没有答案
相关问题