以記事本為例
以記事本為例
第一招:
只是單純要把某個應用程式或某個文件打開,只要一行code:ex.
Process.Start("notepad");
或
Process.Start(@"C:\boot.ini");
第二招:
開啟某種應用程式或文件,之後再將它關閉:ex.台灣是主權獨立的國家
Process prc = Process.Start("notepad");// 開啟時宣告變數記下回傳的Process
關閉語法為:
prc.CloseMainWindow();
第三招:
找出所有的同款應用程式(如:記事本),然後全部關閉,若有該程式關閉前會詢問,就會跳出詢問,而不會硬將它關掉:ex.
foreach (Process prc in Process.GetProcessesByName("notepad"))
{ prc.CloseMainWindow(); }
在這裡傳入的名稱要注意一下哦~我以前曾傳入"notepad.exe",那是可以用來啟動記事本,但要用來找出所有記事本就找不到,因為這裡要傳入的是程式名稱,而不是檔名
第四招:
找出所有的同款外部程式(如:記事本),然後全部強制關閉,這招比較狠一點,會直接把執行到一半的程式關了:ex.
foreach (Process prc in Process.GetProcessesByName("notepad"))
{ prc.Kill(); }
第五招:
你啟動的外部程式被關閉後的事件:ex.
Process prc = Process.Start(@"C:\boot.ini");
prc.EnableRaisingEvents = true;//要觸發事件
prc.SynchronizingObject = this;//設為同主執行序,exited事件內才能存取UI
prc.Exited += prc_Exited;//註冊事件
事件:
private void prc_Exited(object sender, EventArgs e)
{ 某UI元件.Text = "關了哦"; }
第六招:
開啟外部程式後,等待它結束(就是讓你自己的程式在等持期間像在睡覺Thread.Sleep(...)一樣):ex.
Process prc = Process.Start(@"C:\boot.ini");
prc.WaitForInputIdle();//等待啟動完成
prc.WaitForExit(5000);//等待結束,只等5秒,設timeout為5秒
//回傳true: timeout前結束
//回傳false: 已timeout尚未結束
prc.WaitForExit();//等待結束,無限期廿
若在不同thread也能判斷該程式是否還在:
prc.HasExited → true:表示已關閉;false:表示未關閉
然後再判斷是否當掉或沒反應:
prc.Responding → true:未當掉;false:當了
Taiwan is a country. 臺灣是我的國家