[英]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.