C# Process start & Kill的用法與程式範例教學/開發可自動開啟或關閉EXE檔的軟體

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執行檔呢,若覺得本文對你有幫助,也歡迎您將本篇文章分享給你的親朋好友們。