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);
}
}
}