热键必须先注册,再检测消息,最后注销。
Public Declare Function RegisterHotKey Lib "user32" Alias "RegisterHotKey" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long |
Public Declare Function UnregisterHotKey Lib "user32" Alias "UnregisterHotKey" (ByVal hwnd As Long, ByVal id As Long) As Long |
参数 | 意义 |
---|---|
RegisterHoeKey | 注册热键,返回非零值表示注册成功 |
hwnd | 接收热键消息的窗口句柄 |
id | 0 - &HBFFF 之间的一个数,生成 ID |
fsModifiers | 功能键,可组合: Public Const MOD_ALT = &H1 Public Const MOD_CONTROL = &H2 Public Const MOD_SHIFT = &H4 Public Const MOD_WIN = &H8 |
vk | 键列表 |
Public Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer |
GlobalAddAtom('MyHotKeyString') - &HC000 |
参数 | 意义 |
---|---|
GlobalAddAtom | 根据字符串,生成 &HC000 - &HFFFF 的值,不符要求,一般再减 &HC000 后使用 |
lpString | 自定义字符串 |
(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) |
参数 | 意义 |
---|---|
hwnd | 接收消息的窗体 |
msg | 消息号,常量值 WM_HOTKEY |
wParam | 热键 ID |
lParam | 低位:按键,同上面的 vk
高位:按键键值 |
Public HotkeyID As Long
HotkeyID = GlobalAddAtom("SN_HOEKEY_1") - &HC000 RegisterHotKey Me.hwnd, HotkeyID, MOD_WIN, Asc("S") |
常量 | 值 | 对应键 |
---|---|---|
48 - 57 | 48 - 57 | 数字键 |
65 - 90 | 65 - 90 | 字母键 |
VK_LBUTTON | 1 | Left mouse button |
VK_RBUTTON | 2 | Right mouse button |
VK_CANCEL | 3 | Control+Break |
VK_MBUTTON | 4 | Middle mouse button |
VK_BACK | 8 | Backspace key |
VK_TAB | 9 | Tab key |
VK_CLEAR | 12 | Clear key |
VK_RETURN | 13 | Enter key |
VK_SHIFT | 16 | Shift key |
VK_CONTROL | 17 | Ctrl key |
VK_MENU | 18 | Alt key |
VK_PAUSE | 19 | Pause key |
VK_CAPITAL | 20 | Caps Lock key |
VK_KANA | 21 | Used with IME |
VK_HANGUL | 21 | Used with IME |
VK_JUNJA | 23 | Used with IME |
VK_FINAL | 24 | Used with IME |
VK_HANJA | 25 | Used with IME |
VK_KANJI | 25 | Used with IME |
VK_CONVERT | 28 | Used with IME |
VK_NONCONVERT | 29 | Used with IME |
VK_ACCEPT | 30 | Used with IME |
VK_MODECHANGE | 31 | Used with IME |
VK_ESCAPE | 27 | Esc key |
VK_SPACE | 32 | Space bar |
VK_PRIOR | 33 | Page Up key |
VK_NEXT | 34 | Page Down key |
VK_END | 35 | End key |
VK_HOME | 36 | Home key |
VK_LEFT | 37 | Left Arrow key |
VK_UP | 38 | Up Arrow key |
VK_RIGHT | 39 | Right Arrow key |
VK_DOWN | 40 | Down Arrow key |
VK_SELECT | 41 | Select key |
VK_PRINT | 42 | Print key (keyboard-specific) |
VK_EXECUTE | 43 | Execute key |
VK_SNAPSHOT | 44 | Print Screen key |
VK_INSERT | 45 | Insert key |
VK_DELETE | 46 | Delete key |
VK_HELP | 47 | Help key |
VK_RWIN | 92 | Right Windows key (Microsoft keyboard) |
VK_APPS | 93 | Applications key (Microsoft keyboard) |
VK_NUMPAD0 | 96 | 0 key (numeric keypad) |
VK_NUMPAD1 | 97 | 1 key (numeric keypad) |
VK_NUMPAD2 | 98 | 2 key (numeric keypad) |
VK_NUMPAD3 | 99 | 3 key (numeric keypad) |
VK_NUMPAD4 | 100 | 4 key (numeric keypad) |
VK_NUMPAD5 | 101 | 5 key (numeric keypad) |
VK_NUMPAD6 | 102 | 6 key (numeric keypad) |
VK_NUMPAD7 | 103 | 7 key (numeric keypad) |
VK_NUMPAD8 | 104 | 8 key (numeric keypad) |
VK_NUMPAD9 | 105 | 9 key (numeric keypad) |
VK_MULTIPLY | 106 | Multiply key (numeric keypad) |
VK_ADD | 107 | Add key (numeric keypad) |
VK_SEPARATOR | 108 | Separator key (numeric keypad) |
VK_SUBTRACT | 109 | Subtract key (numeric keypad) |
VK_DECIMAL | 110 | Decimal key (numeric keypad) |
VK_DIVIDE | 111 | Divide key (numeric keypad) |
VK_F1 - VK_F24 | 112 - 135 | F1 - F24 |
VK_NUMLOCK | 144 | Num Lock key |
VK_SCROLL | 145 | Scroll Lock key |
VK_LSHIFT | 160 | Left Shift key (only used with GetAsyncKeyState and GetKeyState) |
VK_RSHIFT | 161 | Right Shift key (only used with GetAsyncKeyState and GetKeyState) |
VK_LCONTROL | 162 | Left Ctrl key (only used with GetAsyncKeyState and GetKeyState) |
VK_RCONTROL | 163 | Right Ctrl key (only used with GetAsyncKeyState and GetKeyState) |
VK_LMENU | 164 | Left Alt key (only used with GetAsyncKeyState and GetKeyState) |
VK_RMENU | 165 | Right Alt key (only used with GetAsyncKeyState and GetKeyState) |
VK_PROCESSKEY | 229 | Process key |
VK_ATTN | 246 | Attn key |
VK_CRSEL | 247 | CrSel key |
VK_EXSEL | 248 | ExSel key |
VK_EREOF | 249 | Erase EOF key |
VK_PLAY | 250 | Play key |
VK_ZOOM | 251 | Zoom key |
VK_NONAME | 252 | Reserved for future use |
VK_PA1 | 253 | PA1 key |
VK_OEM_CLEAR | 254 | Clear key |