2013-09-25 71 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

相關問題