打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB入门技巧N例(3)
userphoto

2011.01.31

关注
9. 为程序注册热键

  1. 方法一:修改注册表
  2. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id _
  3. As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
  4. Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id _
  5. As Long) As Long
  6. Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, _ ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal _ wRemoveMsg As Long) As Long
  7. Private Declare Function WaitMessage Lib "user32" () As Long
  8. Private Type POINTAPI
  9.     x As Long
  10.     y As Long
  11. End Type
  12. Private Type Msg
  13.     hWnd As Long
  14.     Message As Long
  15.     wParam As Long
  16.     lParam As Long
  17.     time As Long
  18.     pt As POINTAPI
  19. End Type
  20. '  声明常数
  21. Private Const MOD_ALT = &H1
  22. Private Const MOD_CONTROL = &H2
  23. Private Const MOD_SHIFT = &H4
  24. Private Const PM_REMOVE = &H1
  25. Private Const WM_HOTKEY = &H312
  26. Private HotKey_Fg As Boolean
  27. Private Sub Form_Load()
  28.     Dim Message As Msg
  29.     '注册 Ctrl+Y 为热键
  30.     RegisterHotKey Me.hWnd, &HBFFF&, MOD_CONTROL, vbKeyY
  31.     'RegisterHotKey Me.hWnd, &HBFF2&, MOD_CONTROL, vbKeyU
  32.     Me.Show
  33.     Form1.Hide
  34.     '等待处理消息
  35.     HotKey_Fg = False
  36.     Do While Not HotKey_Fg
  37.         '等待消息
  38.         WaitMessage
  39.         '检查是否热键被按下
  40.         If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
  41.             Form1.Show 1
  42.             End If
  43.         '转让控制权,允许操作系统处理其他事件
  44.         DoEvents
  45.     Loop
  46. End Sub
  47. Private Sub Form_Unload(Cancel As Integer)
  48.     HotKey_Fg = True
  49.     '撤销热键的注册
  50.     Call UnregisterHotKey(Me.hWnd, &HBFFF&)
  51. End Sub
复制代码

方法二:SendMessage
  1. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As _ Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  2. Private Const WM_SETHOTKEY = &H32
  3. Private Const HOTKEYF_SHIFT = &H1
  4. Private Const HOTKEYF_ALT = &H4
  5. Private Sub Form_Load()
  6.    Dim l As Long
  7.    Dim wHotkey As Long
  8.    wHotkey = (HOTKEYF_ALT) * (2 ^ 8) + 65  '定义ALT+A为热键
  9.    l = SendMessage(Me.hwnd, WM_SETHOTKEY, wHotkey, 0)
  10. End Sub
复制代码
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vb简单控制音量大小及静音的方法
VB实用代码,收藏!!
Excel中响应键盘事件(VBA)
最小化Excel 至系统托盘
VB 查找游戏窗口句柄的方法
Excel制表技巧(29)自定义B
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服