问一个问题,热键可以设为一个键吗?

uynetwork 2008-05-24 07:02:23
热键可以设为一个键吗?比如不用组合,只按下“~”就可以
我说的是API的
---------------------------------------------------------------
1。先声明如下api函数及常量,同时声明一个类变量HotKeyID用于记录热键ID
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
Public Declare Auto Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Short
Public Const MOD_ALT As Integer = &H1
Public Const MOD_CONTROL As Integer = &H2
Public Const MOD_SHIFT As Integer = &H4
Public Const MOD_WIN As Integer = &H8
Public Const WM_HOTKEY As Integer = &H312
private HotKeyID as Short=-1
2。然后在窗体类的初始化函数中注册热键
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
HotkeyId = GlobalAddAtom("TestHotkey")
If RegisterHotKey(Me.Handle, HotkeyId, MOD_ALT, Keys.G) = FALSE Then
MessageBox.Show("注册热键失败")
End If
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
3。然后重载窗体类的wndpro方法
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case WM_HOTKEY ‘这里仅仅给出一个示例,实际的代码根据实际情况改变
Me.Visible = Not Me.Visible
Case Else
MyBase.WndProc(m)
End Select
End Sub
4.重写窗体类的Dispose方法
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
if HotKeyID <>-1 then
UnRegisterHotKey(Me.Handle, HotkeyId)
end if
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

--------------------------------------------------------------
以上代码是实现HOTKEY的,如果可以的话怎么改?
...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
HimeTale 2008-05-26
  • 打赏
  • 举报
回复
Dim keyShiftDel As Keys = CType(Keys.Delete + Keys.Shift, Keys)
这个是组合键的定义方式
只在此山中 2008-05-26
  • 打赏
  • 举报
回复
可以,修改这句
If RegisterHotKey(Me.Handle, HotkeyId, 0, Keys.G) = FALSE Then
单独1个G键

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧