C# - よく使うクラス - System.Diagnostics.Process

クラウディア 
1. 概要
2. Id プロセス ID
3. Start プロセス起動
4. HandleCount ハンドル数
5. GetProcessesByName 実行中のプロセスチェック

1. 概要

 本ページは、下記のサイトを参考にさせていただきました。
Process クラス (System.Diagnostics) 」
「ProcessStartInfo クラス (System.Diagnostics)」
「Process.HandleCount プロパティ (System.Diagnostics) | Microsoft Docs」
「System.Diagnostics.Processを用いてコマンドラインを実行する
 説明によれば「System.Diagnostics.Process」は、「ローカル プロセスやリモート プロセスへのアクセスを提供し、ローカル システム プロセスの起動と停止ができるようにします。」なのだそうであります。

2. プロセス ID


System.Diagnostics.Process.GetCurrentProcess().Id
 で、現在の自分のプロセス「ID」(Int32)を取得することができます。

3. Start プロセス起動


System.Diagnostics.Process.Start(引数)
 によって、「引数」で指定したプログラムを起動します。  ドキュメントには「プロセス リソースを起動し、Process コンポーネントに関連付けます」と書かれています(ワタクシには、理解しにくい)。  引数には、わたしは

System.Diagnostics.ProcessStartInfo
 というクラスを使用しています。  下記のような感じで、起動しています。

System.Diagnostics.ProcessStartInfo ProcessStartInfo = new System.Diagnostics.ProcessStartInfo ProcessStartInfo();

ProcessStartInfo.FileName   		= プログラムのファイル名;
ProcessStartInfo.Arguments   		= 起動時のパラメータ;
ProcessStartInfo.WorkingDirectory   = 作業ディレクトリ;

System.Diagnostics.Process.Start(ProcessStartInfo);

4. HandleCount ハンドル数

 「HandleCount」は、プロパティですな。

System.Diagnostics.Process.GetCurrentProcess().HandleCount
 で、自プロセスが、現在使用中のハンドル数を取得することができます。

5. GetProcessesByName 実行中のプロセスチェック

 「Process.GetProcessesByName メソッド (System.Diagnostics) 」によれば
新しい Process コンポーネントの配列を作成し、指定したプロセス名を共有する既存のプロセス リソースに関連付けます。
 ちゅうことなんですが、わたしにはよう理解できません。  もっぱら、同名のプロセスが、あるかチェックして二重起動を防止するのに使っています。  オーバライドメソッドが2つあって

GetProcessesByName(String, String)
GetProcessesByName(String)
 前者は、2番目の引数が「ネットワーク上のコンピューターの名前」らしいのですが、後者の方しか使ったことがありません。  戻り値は、「Process」型の配列です。  結局、わたしの使い方は、配列の個数が 0 以下であれば、同名の起動中のプロセスが存在していて、そうでなければ、存在しないという使い方なのです。
AbemaTV 無料体験