Pause

暂停脚本的当前线程或设置底层线程的暂停状态.

Pause UnderlyingThreadState

参数

UnderlyingThreadState

类型: 整数

如果省略, 暂停当前线程. 否则, 请指定以下值之一:

1True: 将底层线程标记为暂停. 当前线程不会暂停并继续运行. 当前线程结束后, 底层线程会恢复在底层线程运行时任何中断的函数. 一旦底层线程完成函数(如果有), 就会进入暂停状态. 如果当前线程下面没有线程, 脚本本身就会被暂停, 这将阻止计时器运行(这个效果与脚本没有线程时使用菜单项 "Pause Script" 的效果一样).

0False: 取消底层线程的暂停.

-1: 切换底层线程的暂停状态.

备注

默认情况下, 脚本也可以通过它的托盘图标主窗口来暂停.

Suspend 禁用热键热字串不同, 开启暂停状态会冻结线程(如果省略了 UnderlyingThreadState, 则冻结当前线程, 否则冻结底层线程). 副作用是, 在它下面的任何被中断线程都将处于休眠状态, 直到当前线程取消暂停并结束.

暂停任意线程或脚本本身后, 计时器不会运行. 与之相比, 显式启动的线程(如 热键菜单项) 仍然可以运行; 但当它们的线程结束时, 底层线程仍会被暂停. 换句话说, 每个线程都能独立于其他线程被暂停.

每当脚本的当前线程处于暂停状态时, 托盘图标变为 a green icon with a Pause symbol(或为 a green icon with a transparent Pause symbol, 如果脚本同时也被挂起). 可以通过冻结图标来避免图标更改, 这通过使用 TraySetIcon(,, true) 来实现.

要禁用计时器而不暂停脚本, 请使用 Thread NoTimers.

当脚本显示任意类型的菜单(托盘菜单, 菜单栏, GUI 上下文菜单, 等) 时, 脚本总是处于停顿状态(虽然不是正式地暂停).

如果紧挨着当前线程的线程被暂停, 则内置变量 A_IsPaused 包含 1, 否则为 0.

Suspend, Menu 对象, ExitApp, 线程, SetTimer

示例

使用 Pause 来停止脚本, 比如检查变量.

ListVars
Pause
ExitApp ; 这一行将不会被执行, 直到用户取消暂停脚本为止.

按一次热键可暂停脚本. 再按一次即可取消暂停.

Pause::Pause -1  ; Pause/Break 键.
#p::Pause -1  ; Win+P

发送 Pause 函数到另一个脚本.

DetectHiddenWindows True
WM_COMMAND := 0x111
ID_FILE_PAUSE := 65403
PostMessage WM_COMMAND, ID_FILE_PAUSE,,, "C:\YourScript.ahk ahk_class AutoHotkey"