热键

热键必须先注册,再检测消息,最后注销。

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 键列表

生成 ID

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