虽然谷歌我只有如何获取所有进程的信息,存储到Process[]
中,但我需要的是:
Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();
下面我创建了一个进程对象,现在我需要知道这个进程是否关闭,确切地说是这个,因为如果用户关闭,如果我从代码proc.Exit();
尝试,它会抛出异常。
到目前为止,我喜欢:
Process procs = new Process();
Process[] proc = Process.GetProcesses();
foreach (Process p in proc)
{
if (p.Id = procs.Id)
{
//Do Something
break;
}
}
只需在Process
对象上使用HasExited
:
Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();
// do something
if(proc.HasExited)
// notepad was closed
或者,如果您希望在流程关闭后立即收到通知,请使用Exited
事件:
Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Exited += ProcessExited;
proc.Start();
private void ProcessExited(object sender, EventArgs e)
{
// notepad was closed
}
添加此行:
proc.Exited += new EventHandler(proc_Exited);
那么这样的方法:
void proc_Exited(object sender, EventArgs e)
{
//process has ended..
}
您可以拥有自己的全局标志,并在处理程序中提升它,或者"实时"处理它,这取决于您的最终目标是什么。