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 以下であれば、同名の起動中のプロセスが存在していて、そうでなければ、存在しないという使い方なのです。
|
|