[英]How to get multiple instance details of single process in c#?
在我的桌面上,triplE应用程序正在运行。 它的进程名称是“ Orig_sysdsner”。 这里创建单个进程,但是创建多个实例,每个实例标题将是唯一的。 现在,我想使用实例名称获取此过程的所有实例。 如何在C#中完成?
下面的功能我已经尝试过,但获取上次打开的实例详细信息。
public static List<string> GetDGDesignEditorRunningInstance()
{
List<string> runningInstanceList = new List<string>();
List<Process> processList = Process.GetProcessesByName("Orig_sysdsner").ToList();
try
{
foreach (Process process in processList)
{
//string instanceName = process.MainModule.FileName;
string instanceName = process.MainWindowTitle;
runningInstanceList.Add(instanceName);
}
}
catch (Exception ex)
{
throw ex;
}
return runningInstanceList;
}
进程可能没有窗口标题。 如果我执行此操作:
var runningInstanceList=Process.GetProcessesByName("Chrome")
.Select(proc=>proc.MainWindowTitle)
.ToList();
我将取回16个条目,只有其中一个具有MainWindowTitle。 Chrome使用不显示任何标题的标签和后台进程。
如果使用MicrosoftEdgeCP
我将取回17个字符串,所有字符串均具有相同的标题Microsoft Edge
。
顺便说一句,您不需要调用.ToList()
即可遍历GetProcessByName
返回的数组。 foreach
可在实现IEnumerable
或IEnumerable<T>
。 您可以使用LINQ选择所需的项目,这样就可以摆脱循环并将标题逐一添加到结果列表中,例如:
var runningInstanceList=Process.GetProcessesByName("Chrome")
.Select(proc=>new { proc.Id,
proc.ProcessName,
proc.MainWindowTitle
})
.ToList();
将返回唯一的进程ID,名称和窗口标题(如果存在)。
您可以使用Process Explorer并将Window Title
添加到进程列表中,以查看每个应用程序报告的标题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.