如何殺進程

 要利用代碼殺掉指定進程,一般有兩種方法:

1)Process.CloseMainWindow();這個方法可以優雅的關閉窗口。但該方法之對有窗口的程序有效,如果該程序沒有主窗口,或者主窗口隱藏(例如程序最小化到了windows右下角的通知欄中),則該方法無法結束進程返回false。這個方法相當於對窗口發送關閉消息 wm_close,可以看成和手動點窗口的關閉按鈕是等效的,那也意味着當主界面不響應時(例如,程序爲單線程,正在執行一個耗時的操作),該函數也會返回false。在這些情況下優雅的方法不靈了,敬酒不吃吃罰酒,暴力的方法就能派上用場了。

2)Process.Kill();這是個暴力的方法,強制殺掉進程。

需要注意的時,這兩種方法正確返回後,並不意味着進程已經結束了,有可能還要等1秒鐘還會結束。所以如果是想重啓進程的話,結束進程後立即重啓,重啓的進程再檢測當前進程是有可能發現同名進程的。Process.WaitForExit(60000)可以使得當前進程(要結束其他進程的進程)等待Process對象所關聯的進程60秒鐘或者到該進程結束,這就可以用來儘量在目標進程還未結束時就啓動新的進程。

 

下面是一段結束進程的代碼:

 

遺憾之處是當窗口被最小化到通知欄時,將用kill殺進程,而kill無法清除通知欄。誰有完善的解決辦法?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章