在 C# 中啟動一個程序

Muhammad Zeeshan 2023年1月30日 2022年4月20日
  1. C# 中的程序是什麼
  2. C# 中使用 Process.Start` 來啟動一個程序
  3. C# 中使用 ProcessStartInfo 啟動程序
  4. C# 中使用 Process.GetProcesses` 來啟動一個程序
  5. C# 中使用 Process.GetProcessesByName` 來啟動一個程序
  6. C# 中使用 StandardOutput` 來啟動一個程序
  7. C# 中使用 Process.Kill` 來停止一個程序
在 C# 中啟動一個程序

本文將介紹在 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();

輸出:

Process 按名稱獲取程序

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();
   }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

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

相關文章 - Csharp Process