# #IfTimeout [AHK_L 8+]

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

    #IfTimeout Timeout

## 参数

Timeout

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

## 备注

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

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

注意系统使用它自己的超时时间. 系统超时时间值定义为 DWORD 类型值 LowLevelHooksTimeout, 并保存在下列的注册表键中:

HKEY_CURRENT_USER\Control Panel\Desktop

如果超过了系统的超时时间, 那么系统可能会停止调用脚本的键盘钩子, 从而防止钩子热键在重新注册或脚本重新加载前停止工作. 钩子 通常 会在热键挂起或恢复挂起的过程中重新注册.

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

如果某个热键具有多个 #If 变体的指令, 超时也许会独立地应用到每个变体, 更有可能导致超时时间被超过. 这种情况可能会在以后的版本中进行修改.

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

## 相关

#If

## 示例

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

    #IfTimeout 10

dftg