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");
}
}
開始
機能は、プロセスを開始するために使用されます。ProcesswithProcessStart
クラスを実行した後、この出力を取得します。
C#
で ProcessStartInfo
を使用してプロセスを開始する
任意の実行可能ファイルを実行できます。ただし、ProcessStartInfo
の属性が必要になる場合があります。
以下の手順に従って、ProcessStartInfo
メソッドを使用してプロセスを開始します。
以下のライブラリをインポートします。
using System;
using System.Diagnostics;
StartInfo.FileName
属性は、起動するプログラムまたはドキュメントを指定します。例として MicrosoftWord プログラムを使用します。これは基本的なテキストエディタおよびライターです。
process.StartInfo.FileName = "WINWORD.EXE";
ファイル名はパラメータとして StartInfo.Arguments
に渡されます。ここでは、process.docx
という名前のワードファイルを起動します。
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 Download Manager に関連するすべてのプロセスが生成されます。それらの 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)
を使用して、プロセスはメモ帳を起動し、3 秒後に終了します。
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