ProcessSetPriority

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

ProcessSetPriority Level , PIDOrName

参数

Level

类型: 字符串

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

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

PIDOrName

类型: 整数字符串

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

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

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

返回值

类型: 整数

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

备注

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

Run, Process 函数, Win 函数

示例

启动记事本, 将其优先级设置为 "High" 并显示其当前的 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 "'."
    }
}
unixetc