函数参考


_WinAPI_RegisterHotKey

定义一个系统范围的热键.

#Include <WinAPIEx.au3>
_WinAPI_RegisterHotKey ( $hWnd, $ID, $iModifiers, $vKey )

参数

$hWnd 接收 WM_HOTKEY 热键消息的窗口句柄,
如果此参数为 0,WM_HOTKEY 消息传递到调用线程的消息队列,
且进程必须在消息循环内.
$ID 热键的标识符.
 应用程序必须指定 id 值范围为 0x0000 到 0xBFFF.
$iModifiers 指定 $vKey 参数特定键的点击辅助键,用以产生 WM_HOTKEY 消息.
 参数可以是以下值的组合:
 $MOD_ALT --- + ALT 键
 $MOD_CONTROL --- + 任一 Ctri 键
 $MOD_SHIFT --- + Shift 键
 $MOD_WIN --- + 任一微软徽标键
 *Windows 7 或更高系统
 $MOD_NOREPEAT --- 更改热键状态,使键盘不会自动重复产生多个热键通知
$vKey 指定热键的虚拟键代码 ($VK_*).

返回值

成功: 返回 1.
失败: 返回 0,并设置@error标志为非 0 值.

注意/说明

当一个键被按下时,系统会寻找匹配的热键.
当找到一个匹配时,系统传递 WM_HOTKEY 热键消息到关联窗口的消息队列.
 如果热键不是相关窗口, WM_HOTKEY 消息传递到相关的热键线程.
 如果点击的键已被注册为其它热键, _WinAPI_RegisterHotKey() 失败.
在 Windows XP 及其早期版本中,如果具有相同 $hWnd 和 $ID 参数的热键存在,则由新热键替代.
 在 Windows Vista 及其后续版本中, 如果具有相同 $hWnd 和 $ID 参数的热键存在,
 将随着新热键继续维持, 应用程序必须明确调用 _WinAPI_UnregisterHotKey() 注销旧的热键.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)

Global $hWnd

OnAutoItExitRegister('OnAutoItExit')

$hWnd = GUICreate('')
GUIRegisterMsg($WM_HOTKEY, 'WM_HOTKEY')

; 设置 ALT-D
_WinAPI_RegisterHotKey($hWnd, 0x0144, $MOD_ALT, 0x44)
; 设置 ESC
_WinAPI_RegisterHotKey($hWnd, 0x011B, 0, 0x1B)

While 1
    Sleep(1000)
WEnd

Func WM_HOTKEY($hWnd, $iMsg, $wParam, $lParam)
    Switch _WinAPI_HiWord($lParam)
        Case 0x44
            MsgBox(0, '', 'You pressed ALT-D')
        Case 0x1B
            Exit
    EndSwitch
EndFunc   ;==>WM_HOTKEY

Func OnAutoItExit()
    _WinAPI_UnregisterHotKey($hWnd, 0x0144)
EndFunc   ;==>OnAutoItExit