首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 呼叫外部程式與命令列完全指南:Process 類別實戰應用

     編輯:關於C語言

基礎啟動方式

.NET 提供 `System.Diagnostics.Process` 類別啟動外部程式:

using System.Diagnostics;

// 啟動命令提示字元
Process.Start("cmd.exe");

// 啟動指定路徑執行檔
Process.Start(@"C:\Path\To\Application.exe");

帶參數啟動與進階控制

透過 `ProcessStartInfo` 可精確控制啟動參數、工作目錄、視窗樣式等:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "arj.exe";           // 程式名稱
p.StartInfo.Arguments = "-x sourceFile.Arj c:\\temp"; // 啟動參數
p.Start();                                   // 啟動

// 判斷是否執行結束
if (p.HasExited)  // 注意:原文 HasExisted 為拼寫錯誤
    p.Kill();

通用啟動輔助方法

封裝可重用的靜態方法,支援完整啟動參數:

/// 啟動外部應用程式
public static bool StartProcess(string file, string workDirectory, string args, ProcessWindowStyle style)
{
    try
    {
        Process myProcess = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo(file, args);
        startInfo.WindowStyle = style;
        startInfo.WorkingDirectory = workDirectory;
        myProcess.StartInfo = startInfo;
        myProcess.StartInfo.UseShellExecute = false; // 重要:重導向輸出時必須設為 false
        myProcess.Start();
        return true;
    }
    catch (Exception e0)
    {
        MessageBox.Show("啟動應用程式時出錯!原因:" + e0.Message);
        return false;
    }
}

// 實際呼叫範例
string parms = GlobalObject.GetInstance().UserID + " " + GlobalObject.GetInstance().UserPassWord;
if (PublicMethods.StartProcess(
    Application.StartupPath + @"\UpTool\uptool.exe",
    Application.StartupPath + @"\UpTool",
    parms,
    ProcessWindowStyle.Normal))
{
    Environment.Exit(0); // 啟動更新程式後結束自身
}

關鍵注意事項

  • UseShellExecute:預設 true,需設為 false 才能重導向標準輸入/輸出/錯誤流
  • 工作目錄:相對路徑參數依賴正確的 WorkingDirectory
  • 異步等待:長時間執行程式建議使用 `WaitForExit()` 或事件式非阻塞等待
  • 權限問題:Vista 以降啟動需管理員權限的程式需在 manifest 設定 `requireAdministrator`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved