在我的Hello World控制檯應用程序,Process.GetCurrentProcess().Id
屬性創建顯示Console
窗口返回從Id
不同的值應用程序的標準輸出等如何獲得控制檯的進程id在C#控制檯應用程序
如何獲得特定於控制檯窗口的進程ID?
我循環遍歷Process.GetProcesses()
中的進程,並根據窗口標題檢查控制檯窗口。當它發現它時,我打印它的進程id,它與GetCurrentProcess()
調用返回的內容不同。所以我總結了控制檯應用程序進程和控制檯窗口是兩個不同的進程,也許控制檯窗口是我的控制檯應用程序的子進程,或者它是與在Visual Studio中運行控制檯應用程序相關的特性。
Process[] processlist = Process.GetProcesses();
int origProcessId = Process.GetCurrentProcess().Id;
foreach (Process p in processlist)
{
// get all window handles of title 'C:\Windows\system32\cmd.exe
if (!String.IsNullOrEmpty(p.MainWindowTitle) && p.MainWindowTitle.IndexOf("C:\\Windows\\system32\\cmd.exe") == 0)
{
Console.WriteLine("Gets here ok, once & only once");
if(origProcessId == p.Id){
Console.WriteLine("Process: {0}", p.Id); // doesn't get here!!!
}
}
}
你能添加更多的細節嗎?我很難理解你的意思。 – nvoigt
爲什麼地球應該關閉? – user1561108
對我而言,目前還不清楚你真正想要什麼。你開始了第二個過程嗎?你的第一個過程是什麼樣的?你爲什麼要找cmd.exe?你能寫一個[最小,完整和可驗證的例子。](http://stackoverflow.com/help/mcve)? – nvoigt