using System.Collections.Generic; using System.Diagnostics; using System.Reflection; namespace DaJiaoYan.Utils { internal class ProcessExts { public static Process RunningInstance(ref Process target) { Process result = null; Process[] processes = Process.GetProcessesByName(target.ProcessName); //遍历与当前进程名称相同的进程列表 foreach (Process process in processes) { //如果实例已经存在则忽略当前进程 if (process.Id != target.Id) { //保证要打开的进程同已经存在的进程来自同一文件路径 if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\").Equals(target.MainModule.FileName)) { //返回已经存在的进程 result = process; break; } } } return result; } /// /// 获取运行的 /// /// /// public static Process RunningInstance(string filename) { Process result = null; filename = filename.Replace("/", "\\"); Process[] processes = Process.GetProcesses(); foreach (Process process in processes) { try { if (process != null && process.MainModule != null && process.MainModule.FileName.Replace("/", "\\").Equals(filename)) { result = process; break; } } catch { } } return result; } public static List GetSubProcess(string parentName) { List result = new List(); Process[] processes = Process.GetProcesses(); int i = 0; foreach (Process process in processes) { try { Utils.Log.WriteLine($"{++i}: {process.MainModule.ModuleName} / {process.MainModule.FileName}"); //if (process != null && process.MainModule != null && process.MainModule.ModuleName.FileName.Replace("/", "\\").Equals(filename)) //{ // result.Add(process); // break; //} } catch { } } return result; } /// /// 启动升级程序 /// public static void RunUpdate() { Process.Start(Variables.Const.UPDATE_EXEC_FILENAME); } } }