C#基礎(⑤ProcessStartInfo類和Process類)

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.exechrome.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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97986.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《設計模式之禪》筆記摘錄 - 19.備忘錄模式

備忘錄模式的定義備忘錄模式(Memento Pattern)提供了一種彌補真實世界缺陷的方法,讓“后悔藥”在程界序的世界中真實可行,其定義如下:Without violating encapsulation, capture and externalize an objects internal state so that the obje…

22、Jenkins容器化部署Java應用

22、Jenkins容器化部署Java應用 1、準備Dockerfile 將Dockerfile文件放入項目目錄下 FROM registry.cn-hangzhou.aliyuncs.com/xx_blog/openjdk:21-jdk LABEL maintainer"xxqq.com" #復制打好的jar包 COPY target/*.jar /app.jar RUN apk add -U tzdata; \ ln -sf /…

基于單片機智能水龍頭/智能洗漱臺設計

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 該設計采用單片機作為核心控制器,結合紅外傳感器、水流傳感器和電磁閥等模塊&#xf…

GD32入門到實戰30--產品配置參數存儲方案 (EEPROM)

我們之前已經實現eeprom的驅動了,我們在應用層實現產品配置參數存儲方案我們要實現:原本設定的modebus從機(單片機)地址是01,存儲在eeprom里,按下按鍵后修改地址為03,重新上電modebus從機&#…

find_code 插件 react_vite

find_code 插件 react_vite const fs require("fs"); const path require("path"); const parser require("babel/parser"); const traverse require("babel/traverse").default; const generate require("babel/generator&…

手機秒變全棧IDE:Claude Code UI的深度體驗

還在為只能在命令行中使用Claude Code而苦惱嗎?想在移動設備上繼續你的AI編程對話嗎?Claude Code UI的出現徹底改變了這一切。這個開源項目為Anthropic官方的Claude Code CLI工具提供了現代化的Web界面,讓你能夠在任何設備、任何地方與AI編程…

F5發布后量子API安全解決方案,以AI驅動全面防護應對量子計算威脅

量子計算的飛速演進,正對傳統加密體系構成日益嚴峻的安全威脅。Gartner預測顯示,到2029年,量子計算機有望攻破目前普遍采用的公鑰加密算法,這一風險正倒逼全球企業加速密碼體系的更迭與升級。面對這一挑戰,F5公司——應…

深度剖析 DC - DC 轉換器在新能源汽車中的關鍵應用

在新能源汽車的發展進程中,DC - DC 轉換器扮演著至關重要的角色。以下將詳細介紹其在新能源汽車上的應用,包括作用、電路組成以及工作原理等方面。DC - DC 轉換器的作用簡單來說,新能源汽車上的 DC - DC 轉換器是一個 “降壓型電壓變換器”。…

【標準項目】在線五子棋對決(下)

在線五子棋對決一. 項目介紹及鏈接二. 項目結構設計項目模塊劃分業務處理模塊的子模塊劃分項目流程圖玩家流程圖服務器流程圖三. 數據管理模塊數據庫設計創建 user_table 類四. 在線用戶管理模塊五. 游戲房間管理模塊游戲房間類實現游戲房間管理類實現六. Session 管理模塊Sess…

重構導航之核:高德地圖的深度學習架構解析 導論:從數字化世界到可計算世界

導論:從數字化世界到可計算世界 數字地圖的演進,本質上是一場關于“世界可計算性”的持續探索。第一代地圖的核心任務是數字化轉錄(Digital Transcription),它成功地將物理世界的靜態元素——道路、建筑、興趣點&#…

邏輯回歸(sigmoid函數、混淆矩陣、精確率召回率F1)

目錄 一、概述 1、邏輯回歸 2、激活函數 sigmoid函數 3、最大似然估計 二、邏輯回歸 1、原理 2、損失函數 3、代碼 三、混淆矩陣 1、定義 2、舉例 3、代碼 四、分類評估方法 1、精確率(Precision) 2、召回率(Recall) 3、F1&#…

Redis底層實現原理之五大基礎結構

文章目錄1. 基礎結構和編碼類型2. 編碼類型和數據結構實現2.1 字符串(String)2.2 壓縮列表(listpack)2.3 哈希表(hashtable)2.4 快速列表(quicklist)2.5 整數集合(intset…

火山引擎數據智能體DataAgent總結分享

數據的冰山:看得見的資產與看不見的鴻溝 這張圖片用“冰山”類比的方式展示了數據資產管理中的可見與不可見問題,并突出了數據利用的核心挑戰與潛在陷阱。 1. 冰山之上的“看得見的資產” 內容:數據庫、報表、指標等結構化、顯性的數據資源。 核心挑戰: 需要從“采集存儲”…

100種高級數據結構 (速查表)

一、 基礎結構的擴展與組合 (Advanced Linear Structures) 這些結構在數組、鏈表、隊列、棧等基礎結構上增加了特定功能或約束。雙端隊列 (Deque - Double-Ended Queue) 介紹:允許在隊列的前后兩端都進行插入和刪除操作的線性結構。應用場景:工作竊取算法…

一個開源的企業官網簡介

簡介一個完美的企業官網系統,支持手機端和電腦端展示企業風采,還可以展示企業產品/企業新聞資訊等等.普通用戶PC端展示普通用戶手機端展示管理后臺

TCP實現線程池競爭任務

服務端&#xff1a;#include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netinet/ip.h> #include<strings.h> #include<unistd.h> #include<ctype.h> #include<arpa/inet.h&…

Redis C++ 實現筆記(F篇)

Implementing Redis in C : F Redis C 實現筆記&#xff08;F篇&#xff09; 前言 本章代碼及思路均來自Build Your Own Redis with C/C 本文章只闡述我的理解想法&#xff0c;以及需要注意的地方。 本文章為續<<Implementing Redis in C : E>>所以本文章不再…

finally 與 return的執行順序

一、第一次試驗public static void main(String[] args) throws InterruptedException {System.out.println(aaa(null));}private static StringBuilder aaa(Integer i) throws InterruptedException {StringBuilder sb new StringBuilder();try {i.toString();return sb;} ca…

Git安裝教程

簡介 Git 是目前全球最流行的分布式版本控制系統&#xff08;Distributed Version Control System, DVCS&#xff09;&#xff0c;核心作用是追蹤文件修改歷史、支持多人協同開發&#xff0c;并能高效管理代碼&#xff08;或任何文本類文件&#xff09;的版本迭代。它由 Linux…

Linux安裝RTL8821CE無線網卡驅動

1. 查看網卡芯片$ lspci | grep Net 01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter2. 預備配套sudo apt install -y dkms git3. 下載驅動并安裝git clone https://github.com/tomaspinho/rtl8821ce.git cd r…