.net winfrom 定义全局快捷键!

public class Test 
Dim myTimeNow As String
    '全局快捷键
    Public Const WM_HOTKEY = &H312
    Public Const MOD_ALT = &H1
    Public Const MOD_CONTROL = &H2
    Public Const MOD_SHIFT = &H4
    Public Const GWL_WNDPROC = (-4)
    Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias _
        "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
    Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias _
        "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
    Private Sub ProcessHotKey(ByVal m As Message)
        Dim id As IntPtr
        id = m.WParam
        Dim sid As String = id.ToString
        Select Case sid
            Case "100"
                txtTXM.Focus()
            Case "101"
                txtSL.Focus()
            Case "102"
                txtDW.Focus()
            Case "103"
                txtCFH.Focus()
            Case "104"
                txtSZM.Focus()
            Case "105"
            Case "106"
            Case "107"
            Case "108"
            Case "109"
            Case "110"
            Case "111"
            Case "112"
                Me.Close()
        End Select
    End Sub
    '通过监视系统消息,来调用过程
    Protected Overrides Sub WndProc(ByRef m As Message)
        If m.Msg = WM_HOTKEY Then
            ProcessHotKey(m)
        End If
        MyBase.WndProc(m)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SkinEngine1.SkinFile = Application.StartupPath + "\\Skins\\Longhorn\\Longhorn.ssk"
        DataGridView1.Columns(1).Frozen = True

        '注册热键
        RegisterHotKey(Handle, 100, 0, Keys.F1)
        RegisterHotKey(Handle, 101, 0, Keys.F2)
        RegisterHotKey(Handle, 102, 0, Keys.F3)
        RegisterHotKey(Handle, 103, 0, Keys.F4)
        RegisterHotKey(Handle, 104, 0, Keys.F5)
        RegisterHotKey(Handle, 105, 0, Keys.F7)
        RegisterHotKey(Handle, 106, 0, Keys.F8)
        RegisterHotKey(Handle, 107, 0, Keys.PageUp)
        RegisterHotKey(Handle, 108, 0, Keys.PageDown)
        RegisterHotKey(Handle, 109, 0, Keys.Home)
        RegisterHotKey(Handle, 110, 0, Keys.Delete)
        RegisterHotKey(Handle, 111, 0, Keys.End)
        RegisterHotKey(Handle, 112, 0, Keys.Escape)
    End Sub
    Private Sub frmPmain_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        '注销热键
        UnRegisterHotKey(Handle, 100)
        UnRegisterHotKey(Handle, 101)
        UnRegisterHotKey(Handle, 102)
        UnRegisterHotKey(Handle, 103)
        UnRegisterHotKey(Handle, 104)
        UnRegisterHotKey(Handle, 105)
        UnRegisterHotKey(Handle, 106)
        UnRegisterHotKey(Handle, 107)
        UnRegisterHotKey(Handle, 108)
        UnRegisterHotKey(Handle, 109)
        UnRegisterHotKey(Handle, 110)
        UnRegisterHotKey(Handle, 111)

    End Sub
end class

你可能感兴趣的:(.net)