2013-09-25 70 views
-1

我需要检查进程是否已启动,然后验证退出代码。如何关闭已退出C的进程打开的窗口#

EXProcess.StartInfo.FileName = strExE; 
EXProcess.StartInfo.Arguments = tempFile; 
EXProcess.Start(); 
do 
{}while (!rdcProcess.WaitForExit(1000)); 

if (EXProcess.HasExited) 
{ ...} 

EXProcess.Kill(); 

现在,我不得不关闭由这个过程编程打开的窗户。从这个意义上说,我必须终止这个过程开始的一切。

该过程正在启动一个exe。我必须检查它是否能够成功启动它,所以我需要退出代码。因此,我等待代码退出。现在我得到退出代码后,由进程stil启动的窗口就存在了。我必须关闭那个窗口/以某种方式杀死这个过程。但EXProcess.Kill给出了一个例外 - 在评论中提到

我该怎么做? 请你帮

+4

如果一个进程终止,它的所有窗口都不见了,所以你的问题现在没什么意义。你真的想要结束什么? –

+0

我想孙子进程打开的子进程。这看起来像作业对象的工作(http://msdn.microsoft.com/en-us/library/windows/desktop/ms684161%28v=vs.85%29.aspx),但我不确定这些可以直接使用.Net ... – Medinoc

+0

我已编辑上面的代码。我确实试图杀死这个过程。但它提出了一个例外,说我不能杀死已经退出的进程。 – worried

回答

1

我认为这是你想要什么acheive:

using (var process = new Process()) 
{ 
    process.StartInfo.FileName = "notepad.exe"; 
    process.StartInfo.Arguments = ""; 

    process.Start(); 
    process.WaitForExit(1000); 

    if (!process.HasExited) 
     process.Kill(); 
} 

这将打开notepad.exe,如果它的运行时间超过1秒杀它。您可以看到notepad.exe窗口已关闭。

+0

我认为OP想要的东西可以通过参考她打开的过程来实现,然后在她自己的程序退出时将其杀死。你在那里正确的轨道,所以+1。 – Renan

+0

我已经完善了上面的问题。你现在可以帮我理解一下吗? – worried

相关问题