在我的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