繁体   English   中英

更改流程优先级不起作用

[英]Change Process priority does not work

我运行了一个Audio Repeater应用程序,它允许我同时通过我的耳机和扬声器播放声音。 应用程序本身具有将自身设置为“RealTime”的能力,但它只将其设置为高,所以此刻我必须自己在任务管理器中设置它。

我决定自动执行此操作,因此我在C#中编写了一个小脚本,它将改变我的进程优先级(我会在完成后添加启动)

namespace ProcessRealtime
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] processes = Process.GetProcessesByName("audiorepeater");
            foreach (Process proc in processes)
            {
                Console.WriteLine("Changing Priority for: "+proc.Id+" To RealTime");
                proc.PriorityClass = ProcessPriorityClass.RealTime;
                if (proc.PriorityClass == ProcessPriorityClass.RealTime)
                {
                    Console.WriteLine("Worked");
                }
            }
            Console.ReadLine();
        }
    }
}

问题是它不适用更改。 桌面截图

有谁知道为什么这不起作用?

您需要使用管理权限运行您的脚本。

尝试这个 :

using (Process p = Process.GetCurrentProcess())
    p.PriorityClass = ProcessPriorityClass.High;  

您可以以管理员身份运行或删除UAC,因为您需要有权访问未运行的进程。

这对我有用:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// #define DEBUG

namespace ProcessRealtime
{
    class PUBG_RealTime
    {
        static string processName = "TslGame";
        static ProcessPriorityClass newPriority = ProcessPriorityClass.High;

        static void Main(string[] args)
        {
#if DEBUG
            PutDebug("Start!");
#endif
            Process[] processes = Process.GetProcessesByName(processName);
#if DEBUG
            PutDebug(processes.Length + " processed found");
#endif
            foreach (Process proc in processes)
            {
#if DEBUG
                PutDebug("New process found");
#endif
                Console.WriteLine("Changing Priority for id:" + proc.Id + " to " + newPriority.ToString());
                proc.PriorityClass = newPriority;
#if DEBUG
                PutDebug("Changed priority for " + proc.Id);
#endif
            }
#if DEBUG
            PutDebug("No more processes..");
#endif
            Console.Write("Press a key, it's over !");
            Console.ReadLine();
        }

#if DEBUG
        static bool debug = true;
        static int debugInc = 1;
        static void PutDebug(string info = "")
        {
            if(debug){
                Console.WriteLine("Debug" + debugInc + ": " + info);
                debugInc++;
            }
        }
#endif
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM