C# Process是System.Diagnostics命名空間中的一個類別,我們可以透過Process元件來啟動或停止EXE檔,以往在程式開發中特別容易使用到此技巧,舉例來說,我們可以透過它關閉在背景執行的程序,因此以下小編要介紹 C# Process start & Kill的用法與程式範例教學,並分享如何開發一隻可以自動開啟或關閉外部程式EXE檔的軟體,有興趣的讀者就一起來學習C#吧。
C# Process.Kill 與 Process.start 使用方法&說明:
1. 在c sharp程式中,若要使用Process類別需要引入namespace命名空間。
using System.Diagnostics;
2. 透過process.Kill來關閉EXE檔或外部程式。
Process.Kill();
3. 使用Process.Start並帶入參數「程式名稱」就可以呼叫並執行EXE檔,若exe檔沒有放在相同資料夾下就必須填上完整路徑。
Process.Start("程式名稱.exe");
C# Process.Kill 與 Process.start 無法執行的原因&解決方法:
問題1. 出現「系統找不到指定的檔案」的錯誤訊息:
- 導致此問題發生的原因是「程式路徑錯誤或不完整」,請將待啟動的EXE檔案路徑填寫完整或將啟動程式放在同一層資料夾下。
問題2. 出現Access Denied「拒絕訪問」或「存取被拒」的錯誤訊息:
- 執行C# Process.Kill 或 Process.start 時,遇到錯誤訊息Access Denied「存取被拒」,就表示目前的使用者權限不夠,您必須使用管理員身分運行C#程式。
c sharp 完整程式碼範例:
說明:以C#的Process.Kill來關閉在背景重複執行的程式,請注意本程式需要以「Administrator系統管理員」的身分來執行。
/* Process 使用 */ using System.Diagnostics; //取得此process的名稱 String name = Process.GetCurrentProcess().ProcessName; //取得所有與目前process名稱相同的process Process[] ps = Process.GetProcessesByName(name); // process_delete初始值設為-1 ,當 ps.Length > 1 表示此proces已被重複開啟 int process_delete = -1; if (ps.Length > 1) { // 獲得時間 DateTime start_time_0 = ps[0].StartTime; DateTime start_time_1 = ps[1].StartTime; // 時間比較 int DateTime_result = DateTime.Compare(start_time_0, start_time_1); // start_time_0 早於 start_time_1 if (DateTime_result < 0) { process_delete = 0; } // start_time_1 早於 start_time_0 if (DateTime_result > 0) { process_delete = 1; } // 關閉時間較早的執序 if (process_delete != -1) { ps[process_delete].Kill(); // 關閉當前的程式 } }
說明:用C#的Process.Start來呼叫並執行EXE檔。
/* 取得所有process name */ Process[] ps = Process.GetProcessesByName("5S_RTM"); //ps.Length == 0 表示程式未開啟 if (ps.Length == 0) { //開啟程式 System.Diagnostics.Process Info = new System.Diagnostics.Process(); Info.StartInfo.FileName = @".5S_RTM.exe"; Info.Start(); } //釋放陣列記憶體 ps = null;
若想要透過C#來開啟或關閉EXE檔或其它副檔名的外部程式,除了可以透過Process.Kill與Process.start來達成之外,另外您也可以參考C#程式搭配cmd控制命令提示字元來達到相同功能。
總結:
看完以上C#中Process類的用法介紹與教學,是不是更加暸解該如何透過程式來開啟或關閉EXE執行檔呢,若覺得本文對你有幫助,也歡迎您將本篇文章分享給你的親朋好友們。