# #HotIfTimeout

设置计算单个 #HotIf 表达式可以使用的最大时间.

    #HotIfTimeout Timeout

## 参数

Timeout

  类型: 整数

  全局有效的超时值, 单位为毫秒(ms).

## 备注

设置超时时间是为了防止表达式计算时间过长从而延迟了键盘输入. 如果超过了设定的超时值, 表达式会继续计算, 但键盘钩子将假定表达式结果为假而继续执行.

如果脚本中未使用此指令, 那么程序会默认设置为 1000.

注意系统使用它自己的超时时间, 系统超时值由以下注册表项中的 DWORD 类型值 LowLevelHooksTimeout 定义:

HKEY_CURRENT_USER\Control Panel\Desktop

如果超过了系统的超时时间, 那么系统可能会停止调用脚本的键盘钩子, 从而阻止钩子热键工作, 直到键盘钩子重新注册或脚本重新加载. 钩子 通常 可以通过挂起或取消挂起所有热键来重新注册.

微软的文档中关于超时的细节是不清楚的, 但是研究表明 Windows 7 和更高版本的情况是这样的: 如果没有定义 LowLevelHooksTimeout, 默认的超时时间是 300 ms. 钩子最多可以超时 10 次, 但如果超时第 11 次, 则会被自动移除.

如果一个给定的热键具有多个 #HotIf 变体, 超时可能会独立地应用到每个变体, 从而更有可能导致系统超时被超过. 这种情况可能会在以后的版本中进行修改.

和其他指令一样, #HotIfTimeout 不能有条件地执行.

## 相关

#HotIf

## 示例

将 #HotIf 超时设置为 10 ms, 而不是 1000 ms.

    #HotIfTimeout 10

dftg