1. 它是什么?
ProcessStartInfo 是 C# 里的一個類(屬于 System.Diagnostics 命名空間),作用是:
定義要啟動的程序路徑(比如 notepad.exe)
設置啟動時的參數(比如打開哪個文件)
控制啟動后的窗口樣式(比如最大化、最小化)
配置其他啟動選項(比如是否隱藏窗口、是否使用管理員權限等)
2. 為什么需要它?
如果我們想在自己的 C# 程序里打開另一個程序(比如用代碼打開記事本并自動加載一個文本文件),就需要用?ProcessStartInfo
?來 "描述" 這個操作,然后配合?Process
?類執行啟動。
沒有它的話,我們只能簡單啟動程序,無法精確控制啟動方式。
3. 最基礎的用法
先看一個最簡單的例子:用代碼打開記事本。
using System;
using System.Diagnostics; // 必須引入這個命名空間class Program
{static void Main(){// 1. 創建"啟動說明書"ProcessStartInfo startInfo = new ProcessStartInfo();// 告訴電腦要啟動的程序路徑(這里是記事本)startInfo.FileName = "notepad.exe";// 2. 按照說明書啟動程序Process.Start(startInfo);}
}
運行這段代碼,你會發現記事本被自動打開了。
4. 常用的屬性(配置項)
ProcessStartInfo
?有很多屬性,用來配置啟動細節,小白常用的有這些:
屬性名 | 作用舉例 |
---|---|
FileName | 必須設置,指定要啟動的程序路徑(如?notepad.exe 、chrome.exe ) |
Arguments | 啟動程序時的參數(如打開的文件路徑、網址) |
WindowStyle | 窗口樣式(最大化、最小化等) |
UseShellExecute | 是否用系統外殼啟動(簡單理解:設為?false ?更靈活,設為?true ?可啟動網址 / 文件) |
5. 舉例:帶參數啟動程序
比如,用記事本打開一個指定的文本文件(假設文件路徑是?C:\test.txt
):
using System;
using System.Diagnostics;class Program
{static void Main(){ProcessStartInfo startInfo = new ProcessStartInfo();startInfo.FileName = "notepad.exe"; // 程序:記事本startInfo.Arguments = "C:\\test.txt"; // 參數:要打開的文件路徑Process.Start(startInfo); // 啟動后,記事本會自動打開 test.txt}
}
再比如,用瀏覽器打開百度:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "chrome.exe"; // 谷歌瀏覽器(如果是Edge則寫"msedge.exe")
startInfo.Arguments = "https://www.baidu.com"; // 參數:網址
Process.Start(startInfo);
6. 控制窗口樣式
通過?WindowStyle
?可以設置程序啟動后的窗口狀態,比如:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
// 設置窗口最大化(可選值:Normal、Maximized、Minimized、Hidden)
startInfo.WindowStyle = ProcessWindowStyle.Maximized;Process.Start(startInfo);
Process
?類(同樣在?System.Diagnostics
?命名空間下)是用來 "操作" 外部程序的工具,比如啟動程序、關閉程序、獲取程序的運行狀態等。
它和之前講的?ProcessStartInfo
?通常一起使用:ProcessStartInfo
?負責 "描述如何啟動",Process
?負責 "執行啟動并管理這個程序"。
1. 最基礎的用法:啟動程序
直接用?Process.Start()
?可以快速啟動程序,甚至不用顯式創建?ProcessStartInfo
:
using System;
using System.Diagnostics;class Program
{static void Main(){// 啟動記事本(最簡單的方式)Process.Start("notepad.exe");}
}
如果需要帶參數(比如用記事本打開文件),可以這樣寫:
// 啟動記事本并打開 C:\test.txt
Process.Start("notepad.exe", "C:\\test.txt");
2. 完整流程:創建 Process 實例并控制程序
如果需要更精細地控制程序(比如等待程序結束、關閉程序),可以創建?Process
?實例:
using System;
using System.Diagnostics;class Program
{static void Main(){// 1. 創建啟動配置(ProcessStartInfo)ProcessStartInfo startInfo = new ProcessStartInfo();startInfo.FileName = "notepad.exe"; // 程序路徑startInfo.Arguments = "C:\\test.txt"; // 啟動參數// 2. 創建 Process 實例,并關聯配置Process process = new Process();process.StartInfo = startInfo; // 告訴 Process 如何啟動程序// 3. 啟動程序process.Start();// 4. 可選:等待程序關閉后再繼續執行后續代碼Console.WriteLine("記事本已啟動,等待關閉...");process.WaitForExit(); // 程序會卡在這行,直到記事本被關閉// 5. 程序關閉后執行Console.WriteLine("記事本已關閉!");}
}
3. 常用功能:關閉已啟動的程序
如果需要用代碼關閉啟動的程序,可以調用?Kill()
?方法:
using System;
using System.Diagnostics;
using System.Threading;class Program
{static void Main(){// 啟動記事本Process process = Process.Start("notepad.exe");Console.WriteLine("記事本已啟動,3秒后自動關閉...");// 等待3秒Thread.Sleep(3000);// 關閉程序process.Kill();Console.WriteLine("記事本已被關閉!");}
}
4. 常用屬性和方法
成員 | 作用 |
---|---|
Start() | 啟動程序 |
Kill() | 強制關閉程序 |
WaitForExit() | 等待程序自行關閉后再繼續執行代碼 |
HasExited | 判斷程序是否已經關閉(true 表示已關閉) |
Id | 獲取程序的進程 ID(系統中唯一的編號) |
123