| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Reflection;
- namespace ReleaseHelper.Utils
- {
- public static class ProcessExtensions
- {
- 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;
- }
- /// <summary>
- /// 获取运行的
- /// </summary>
- /// <param name="filename"></param>
- /// <returns></returns>
- 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<Process> GetSubProcess(string parentName)
- {
- List<Process> result = new List<Process>();
- 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;
- }
- }
- }
|