2011-05-18 33 views
14

我需要從C#應用程序關閉另一個進程(Windows Media編碼器),到目前爲止,我可以做到這一點:如何關閉另一個進程從C#

Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow(); 

但如果Media編碼器應用程序流或錄製它顯示出口對話框:

「你確定要停止編碼?」

那麼有沒有一種方法可以回答或點擊代碼中的Yes按鈕?

[編輯] 許多用戶與Process.kill()回答,但是這是不是一種選擇,因爲Process.Kill();將終止Windows Media編碼器立即,並Windows Media編碼器纔會完成其寫入文件,它的力量我重新索引視頻文件。所以我不能使用Process.Kill();

+0

不要打擾關閉任何窗口。更好地尋找方法來迫使這個過程被殺死。如果它打開另一個窗口呢?如果任何關聯的窗口打開,進程將不會退出 – 2011-05-18 15:07:57

+0

我相信GetProcessesByName檢索的進程應該處置,順便說一句。 http://stackoverflow.com/questions/16957320/what-does-process-dispose-actually-do – BlueMonkMN 2014-10-30 15:46:22

回答

4

這是一個SO帖子,它從.NET中詢問並回答how to control other applications。接受的答案只用四行代碼來獲得一個窗口,並將按鍵發送到該窗口中的特定按鈕。我認爲這可能是您徹底關閉應用程序的最佳選擇。

+0

http://white.codeplex.com/releases/view/29694這可能是一個解決方案,我現在無法測試它,我將把這個主題保留到昨天才能看到更多意見,而不是我會選擇正確的答案,非常感謝Paul Sasik。 – Burimi 2011-05-18 15:19:40

0

This一步一步的介紹瞭如何從一個應用程序內關閉應用程序。它還介紹如何關閉另一個應用程序的特定實例,如記事本,如果該應用程序的多個實例正在運行。

+0

這是使用只是OP已經有了什麼:'CloseMainWindow'。它根本沒有幫助。 – 2011-05-18 15:15:11

+0

是的,它有幫助。使用可選超時尋找proce.WaitForExit() - 首先它會很好地嘗試。如果它不起作用,那麼ka-boom! – 2011-05-18 15:17:39

相關問題