为了提高炒股软件同花顺的运行速度,消除卡顿,编写一个C#程序,来设置同花顺进程的优先级。
using System;
using System.Diagnostics;
using System.Security.Principal;namespace ProcessPrioritySetter
{class Program{static void Main(string[] args){// 请求管理员权限(必需)if (!IsRunningAsAdmin()){Console.WriteLine("请以管理员身份重新运行此程序!");RestartAsAdmin();return;}// 1. 设置当前运行的 hexin.exe 进程优先级SetExistingProcessPriority();2. 创建计划任务实现永久生效//CreateScheduledTask();//Console.WriteLine("已成功设置优先级并创建永久任务!");//Console.ReadKey();// 5秒倒计时后自动关闭Console.WriteLine("操作已完成,程序将在5秒后自动关闭...");for (int i = 5; i > 0; i--){Console.Write($"\r倒计时: {i}秒 "); // 使用\r实现原地更新System.Threading.Thread.Sleep(1000); // 等待1秒}Console.WriteLine("\n程序关闭!");}// 设置现有进程优先级static void SetExistingProcessPriority(){Process[] processes = Process.GetProcessesByName("hexin");if (processes.Length == 0){Console.WriteLine("未找到 hexin.exe 进程,请在程序运行后执行此操作");return;}foreach (Process proc in processes){try{proc.PriorityClass = ProcessPriorityClass.High;Console.WriteLine($"已设置进程 {proc.Id} 优先级为高");}catch (Exception ex){Console.WriteLine($"设置进程优先级失败: {ex.Message}");}}}// 创建计划任务static void CreateScheduledTask(){try{// 使用 schtasks 命令创建任务ProcessStartInfo psi = new ProcessStartInfo{FileName = "schtasks",Arguments = "/Create /TN \"HexinHighPriority\" /XML \"priority_task.xml\" /F",UseShellExecute = false,CreateNoWindow = true};// 生成 XML 任务描述文件System.IO.File.WriteAllText("priority_task.xml", GetTaskXmlContent());Process.Start(psi)?.WaitForExit();Console.WriteLine("计划任务创建成功!");}catch (Exception ex){Console.WriteLine($"创建计划任务失败: {ex.Message}");}}// 管理员权限检查static bool IsRunningAsAdmin(){return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);}// 重新以管理员身份启动static void RestartAsAdmin(){ProcessStartInfo startInfo = new ProcessStartInfo{FileName = Process.GetCurrentProcess().MainModule.FileName,UseShellExecute = true,Verb = "runas"};Process.Start(startInfo);}// 获取计划任务 XML 内容static string GetTaskXmlContent(){return @"<?xml version='1.0' encoding='UTF-16'?>
<Task version='1.4' xmlns='http://schemas.microsoft.com/windows/2004/02/mit/task'><RegistrationInfo><Description>设置 hexin.exe 进程为高优先级</Description></RegistrationInfo><Triggers><LogonTrigger><Enabled>true</Enabled></LogonTrigger></Triggers><Principals><Principal id='Author'><RunLevel>HighestAvailable</RunLevel></Principal></Principals><Settings><MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy><DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries><StopIfGoingOnBatteries>false</StopIfGoingOnBatteries><IdleSettings><StopOnIdleEnd>false</StopOnIdleEnd></IdleSettings></Settings><Actions Context='Author'><Exec><Command>cmd.exe</Command><Arguments>/c wmic process where name='hexin.exe' call setpriority 'high priority'</Arguments></Exec></Actions>
</Task>";}}
}