热键必须先注册,再检测消息,最后注销。
| 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 |