# 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, Process 函数, Win 函数

## 示例

对于记事本的出现, 最多等待 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."

dftg