ProcessWait

等待指定的进程存在.

PID := ProcessWait(PIDOrName , Timeout)

参数

PIDOrName

类型: 整数字符串

指定数字(PID) 或进程名:

PID: 进程 ID, 唯一标识一个特定进程的数字(只有在此进程的生存期这个数字才有意义). 新运行的进程的 PID 可以通过 Run 函数获取. 同样的, 窗口的 PID 可以通过 WinGetPID 获取. ProcessExist 也可以用来获取 PID.

Name: 进程的名称, 通常和它的可执行文件名相同(不带路径), 例如 notepad.exe 或 winword.exe. 由于一个名称可能与多个正在运行的进程匹配, 因此将仅对第一个进程进行操作. 名称不区分大小写.

Timeout

类型: 整数浮点数

如果未设置或省略, 该函数将无限期地等待. 否则, 指定在超时之前等待的秒数(可以包含小数).

返回值

类型: 整数

如果发现了指定的进程, 该函数返回该进程的进程 ID (PID). 如果函数超时, 则返回 0.

备注

进程每 100 毫秒检查一次; 当条件满足时, 函数停止等待. 换句话说, 它不会等待超时过期, 而是立即返回并继续执行脚本. 此外, 当函数处于等待状态时, 可以通过热键, 自定义菜单项计时器启动新的线程.

ProcessWaitClose, Run, WinWait, 进程函数, 窗口函数

示例

对于记事本的出现, 最多等待 5.5 秒. 如果记事本出现在此秒数内, 则其优先级设置为 "Low", 并且脚本自身的优先级设置为 "High". 之后, 记事本将被关闭, 如果在 5 秒内未关闭, 将显示一个消息框.

NewPID := ProcessWait("notepad.exe", 5.5)
if not NewPID
{
    MsgBox "The specified process did not appear within 5.5 seconds."
    return
}
; 否则:
MsgBox "A matching process has appeared (Process ID is " NewPID ")."
ProcessSetPriority "Low", NewPID
ProcessSetPriority "High"  ; 把脚本自己设置为高优先级.
WinClose "Untitled - Notepad"
WaitPID := ProcessWaitClose(NewPID, 5)
if WaitPID ; PID 仍然存在.
    MsgBox "The process did not close within 5 seconds."
unixetc