在 C# 中啟動一個程序
-
C#
中的程序是什麼 -
在
C# 中使用
Process.Start` 來啟動一個程序 -
在
C#
中使用ProcessStartInfo
啟動程序 -
在
C# 中使用
Process.GetProcesses` 來啟動一個程序 -
在
C# 中使用
Process.GetProcessesByName` 來啟動一個程序 -
在
C# 中使用
StandardOutput` 來啟動一個程序 -
在
C# 中使用
Process.Kill` 來停止一個程序
本文將介紹在 C# 中啟動程序的多種方法。
C#
中的程序是什麼
程序
允許開發人員訪問本地和遠端程序並啟動和終止本地系統程序。
ProcessStartInfo
定義了一個 process
啟動時使用的值的集合。Process
類位於 System.Diagnostics
名稱空間中。
在 C# 中使用
Process.Start` 來啟動一個程序
請按照以下步驟使用 Process.Start
啟動流程。
匯入下面的庫。
using System;
using System.Diagnostics;
建立 Main
類,並在 Main
類中編寫此程式碼以啟動程序(指定要啟動的程式、URL 或檔案)。
Process.Start( @"C:\Users\Shani\Desktop\process.txt");
原始碼:
using System;
using System.Diagnostics;
class ProcesswithProcessStart
{
public static void Main()
{
Process.Start( @"C:\Users\Shani\Desktop\process.txt");
Console.WriteLine("Done");
}
}
Start
功能用於啟動該過程。執行 ProcesswithProcessStart
類後,我們將獲得此輸出。
在 C#
中使用 ProcessStartInfo
啟動程序
我們可以執行任何可執行檔案。但是,可能需要 ProcessStartInfo
上的屬性。
按照以下步驟使用 ProcessStartInfo
方法啟動程序。
匯入下面的庫。
using System;
using System.Diagnostics;
StartInfo.FileName
屬性指定要啟動的程式或文件。我們將使用 Microsoft Word 程式作為示例。它是一個基本的文字編輯器和寫入器。
process.StartInfo.FileName = "WINWORD.EXE";
檔名作為引數傳遞給 StartInfo.Arguments
。在這裡,我們將啟動一個名為 process.docx
的 word 檔案。
process.StartInfo.Arguments = @"C:\Users\Shani\Desktop\process.docx";
原始碼:
using System;
using System.Diagnostics;
Process process = new Process();
process.StartInfo.FileName = "WINWORD.EXE";
process.StartInfo.Arguments = @"C:\Users\Shani\Desktop\process.docx";
process.Start();
輸出:
在 C# 中使用
Process.GetProcesses` 來啟動一個程序
Process.GetProcesses
方法生成連結到現有程序資源的新 Process
元件列表。
匯入下面的庫。
using System;
using System.Diagnostics;
此程式碼將生成所有程序的列表。
Process[] LinkedProcesses = Process.GetProcesses();
之後,我們獲得了一系列程序。
Array.ForEach(LinkedProcesses, (process) =>
{
Console.WriteLine("Process: {0} Id: {1}",process.ProcessName, process.Id);
});
ReadKey()
函式將保持螢幕。
Console.ReadKey();
原始碼:
using System;
using System.Diagnostics;
Process[] LinkedProcesses = Process.GetProcesses();
Array.ForEach(LinkedProcesses, (process) =>
{
Console.WriteLine("Process: {0} Id: {1}",process.ProcessName, process.Id);
});
Console.ReadKey();
輸出:
在 C# 中使用
Process.GetProcessesByName` 來啟動一個程序
Process.GetProcessesByName
方法生成一個新 Process
元件陣列,並將它們與現有程序資源相關聯,該資源與提供的程序同名。
匯入下面的庫。
using System;
using System.Diagnostics;
與 Internet 下載管理器關聯的所有程序都在示例中生成。生成它們的 ID 和程序名稱。
Process[] LinkedProcesses = Process.GetProcessesByName("InternetDownloadManager");
使用者獲取其中名稱為 IDM
的程序列表。
Console.WriteLine("{0} IDM LinkedProcesses", LinkedProcesses.Length);
為了訪問函式返回的所有程序,我們使用了一個 foreach
迴圈。
訪問每個程序的 ID。最後,我們顯示發現的程序總數。
Array.ForEach(LinkedProcesses, (process) =>
{
Console.WriteLine("Process: {0} Id: {1}",process.ProcessName, process.Id);
});
原始碼:
using System;
using System.Diagnostics;
Process[] LinkedProcesses = Process.GetProcessesByName("InternetDownloadManager");
Console.WriteLine("{0} IDM LinkedProcesses", LinkedProcesses.Length);
Array.ForEach(LinkedProcesses, (process) =>
{
Console.WriteLine("Process: {0} Id: {1}",process.ProcessName, process.Id);
});
Console.ReadKey();
輸出:
在 C# 中使用
StandardOutput` 來啟動一個程序
StandardOutput
屬性返回可用於讀取應用程式基於文字的輸出的路徑。
我們可以使用這個屬性(在 ProcessStartInfo
上可用)重定向標準流程輸出。我們可以觀察一個程式從另一個程式的輸出。
匯入下面的庫。
using System;
using System.Diagnostics;
using System.IO;
我們將在此處指定我們希望輸出的程序的名稱。
Prs.StartInfo.FileName = "ipconfig.exe";
我們可以通過將 UseShellExecute
設定為 false 來重定向輸入、輸出和錯誤流。
Prs.StartInfo.UseShellExecute = false;
Prs.StartInfo.RedirectStandardOutput = true;
此程式碼將使用你提供的資訊啟動該過程。
Prs.Start();
對於標準輸出,我們獲得 StreamReader
。
StreamReader sr = Prs.StandardOutput;
ReadToEnd()
函式用於讀取所有資料。
string dataoutput = sr.ReadToEnd();
ReadKey()
將保持螢幕顯示輸出。
Console.ReadKey();
原始碼:
using System;
using System.Diagnostics;
using System.IO;
class StandarOutput
{
public static void Main()
{
using (Process Prs = new Process())
{
Prs.StartInfo.FileName = "ipconfig.exe";
Prs.StartInfo.UseShellExecute = false;
Prs.StartInfo.RedirectStandardOutput = true;
Prs.Start();
StreamReader sr = Prs.StandardOutput;
string dataoutput = sr.ReadToEnd();
Console.WriteLine(dataoutput);
Console.ReadKey();
}
}
}
輸出:
在 C# 中使用
Process.Kill` 來停止一個程序
下面的示例啟動一個程式,然後在幾秒鐘後終止它。
匯入下面的庫。
using System;
using System.Diagnostics;
using System.Threading;
使用 Thread.Sleep(5000)
,該程序啟動記事本並在三秒後終止它。
Thread.Sleep(5000);
Kill()
函式用於終止程序。
process.Kill();
原始碼:
using System;
using System.Diagnostics;
using System.Threading;
class KillProcess
{
public static void Main()
{
Process process = Process.Start("notepad.exe");
Thread.Sleep(1000);
process.Kill();
}
}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn