【发布时间】:2011-02-15 07:42:08
【问题描述】:
我想在VB6中设置一个全局热键*来监听键盘快捷键Win + O。
我发现了一堆乱七八糟的例子,但没有涉及到 Windows 键。
设置热键的理想方法是什么?如何将 Windows 键作为修饰符包含在内?
* 我正在寻找一个全局快捷方式。这意味着我不必让应用程序处于焦点位置即可工作。
【问题讨论】:
我想在VB6中设置一个全局热键*来监听键盘快捷键Win + O。
我发现了一堆乱七八糟的例子,但没有涉及到 Windows 键。
设置热键的理想方法是什么?如何将 Windows 键作为修饰符包含在内?
* 我正在寻找一个全局快捷方式。这意味着我不必让应用程序处于焦点位置即可工作。
【问题讨论】:
Windows API 中的RegisterHotKey 将允许您注册全局热键。您还需要使用 GlobalAddAtom 来获取唯一的热键标识符。详情请见this link。
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
Private Const WM_HOTKEY As Long = &H312
Private Const MOD_WIN As Long = &H8
m_lHotkey = GlobalAddAtom("MyHotkey")
Call RegisterHotKey(Me.hwnd, m_lHotkey, MOD_WIN, vbKeyO)
那么你只需要在你的窗口上监听 WM_HOTKEY 消息。
【讨论】: