這是我的問題:我需要從C#程序關閉已經運行的進程。 問題是,該過程現在作爲一個圖標運行(最小化爲任務欄),並且除非用戶至少打開一次(這絕不會在無人值守的機器上發生),否則它永遠不會有主窗口 。從C#關閉最小化/圖標化進程#
我的另一個要求是應用程序是關閉不是遇難。我需要它將它的內存緩衝區寫入磁盤 - 並殺死它會導致數據丟失。
這裏是我試過到目前爲止:
foreach (Process proc in Process.GetProcesses())
{
if (proc.ProcessName.ToLower().StartsWith("myapp"))
{
if (proc.MainWindowHandle.ToInt32() != 0)
{
proc.CloseMainWindow();
proc.Close();
//proc.Kill(); <--- not good!
}
}
}
我已經添加了如果條款,發現,MainWindowHandle == 0當被最小化窗口後。刪除如果沒有幫助。 CloseMainWindow()也不是Close()工作。 ()殺()確實,但如上所述 - 這不是我所需要的。
任何想法將被接受,包括使用晦澀難懂的Win32 API函數:)
我知道這個問題已經超過六年了,但是您是否曾經找到過C#解決方案?我最終使用了一種名爲AutoIt的腳本語言,它擁有一個ProcessClose函數,它不會「殺死」它,但並未將它與C#結合在一起。 – 2014-11-23 03:39:45