# ProcessSetPriority

更改第一个匹配进程的优先级.

    ProcessSetPriority Level , PIDOrName

## 参数

Level

  类型: 字符串

  指定下列单词或字母的其中一个:

  - Low(或 L) (低)
  - BelowNormal(或 B) (低于标准)
  - Normal(或 N) (普通)
  - AboveNormal(或 A) (高于标准)
  - High(或 H) (高)
  - Realtime(或 R) (实时)

  请注意, 如果将任何没有设计为实时优先级运行的进程设置为该级别, 则可能会降低系统稳定性.

PIDOrName

  类型: 整数或字符串

  如果未设置或省略, 则使用脚本自己的进程. 否则, 请指定一个数字(PID) 或进程名:

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

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

## 返回值

类型: 整数

此函数返回指定进程的进程 ID(PID). 如果没有找到匹配的进程或无法对其操作, 则返回 0.

## 备注

进程的当前优先级可以在 Windows 任务管理器中看到.

## 相关

Run, 进程函数, 窗口函数

## 示例

启动记事本, 将其优先级设置为高, 并显示其当前的 PID.

    Run "notepad.exe", , , &NewPID
    ProcessSetPriority "High", NewPID
    MsgBox "The newly launched Notepad's PID is " NewPID

按下热键改变活动窗口进程优先级.

    #z:: ; Win+Z 热键
    {
        active_pid := WinGetPID("A")
        active_title := WinGetTitle("A")
        MyGui := Gui(, "Set Priority")
        MyGui.Add("Text",, "
        (
            Press Escape to cancel, or double-click a new
            priority level for the following window:
        )")
        MyGui.Add("Text", "wp", active_title)
        LB := MyGui.Add("ListBox", "r5 Choose1", ["Normal","High","Low","BelowNormal","AboveNormal"])
        LB.OnEvent("DoubleClick", SetPriority)
        MyGui.Add("Button", "default", "OK").OnEvent("Click", SetPriority)
        MyGui.OnEvent("Escape", (*) => MyGui.Destroy())
        MyGui.OnEvent("Close", (*) => MyGui.Destroy())
        MyGui.Show()

        SetPriority(*)
        {
            MyGui.Destroy()
            if ProcessSetPriority(LB.Text, active_pid)
                MsgBox "Success: Its priority was changed to '" LB.Text "'."
            else
                MsgBox "Error: Its priority could not be changed to '" LB.Text "'."
        }
    }

dftg