.net winfrom 定义全局快捷键!

本文介绍如何在VB.NET中实现热键功能,包括热键的注册与注销过程,以及如何通过不同的热键实现对应用程序中不同文本框的聚焦操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/Believeme/archive/2009/09/14/1566572.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值