以前ツールを書いていたとき、Unityでサードパーティ製のソフトウェアを開くためにSystem.Diagnostics.ProcessとSystem.Diagnostics.ProcessStartInfoを使っていたのですが、この操作が非常に面倒に感じたので記録しておきます。
プロセス
Docs は
ローカルおよびリモート プロセスへのアクセスを提供し、ローカル システム プロセスを開始および停止できるようにします。
属性 | 注釈 |
---|---|
基本優先度 | 関連付けられたプロセスの基本優先度を取得します。 |
プロセス名 | プロセスの名前を取得します。 |
開始情報 | Start() の Process メソッドに渡されるプロパティを取得または設定します。 |
始まる時間 | 関連付けられたプロセスが開始された時刻を取得します。 |
近い() | このコンポーネントに関連付けられているすべてのリソースを解放します。 |
廃棄() | コンポーネントによって使用されているすべてのリソースを解放します。 |
破棄(ブール値) | このプロセスで使用されているすべてのリソースを解放します。 |
殺す() | 関連するプロセスを直ちに停止します。 |
Kill(ブール値) | 関連するプロセスと、必要に応じてその子/子孫プロセスをただちに停止します。 |
OnExited() | Exited イベントを発生させます。 |
始める() | この Process コンポーネントの StartInfo プロパティで指定されたプロセス リソースを開始 (または再利用) し、それをコンポーネントに関連付けます。 |
開始(プロセス開始情報) | プロセス起動情報 (起動されるプロセスのファイル名など) を含むパラメーターで指定されたプロセス リソースを起動し、そのリソースを新しいプロセス コンポーネントに関連付けます。 |
開始(文字列) | ドキュメントまたはアプリケーション ファイルの名前を指定してプロセス リソースを開始し、そのリソースを新しいプロセス コンポーネントに関連付けます。 |
プロセス開始情報
プロセスの開始時に使用する値のセットを指定します。
属性 | 注釈 |
---|---|
属性 | |
引数リスト | アプリケーションの起動時に使用するコマンド ライン引数のコレクションを取得します。リストに追加された文字列を最初にエスケープする必要はありません。 |
引数 | アプリケーションの起動時に使用する一連のコマンド ライン パラメーターを取得または設定します。 |
ウィンドウなしの作成 | このプロセスを新しいウィンドウで開始するかどうかを示す値を取得または設定します。 |
ファイル名 | 起動するアプリケーションまたはドキュメントを取得または設定します。 |
ウィンドウスタイル | プロセスが最大化されたウィンドウで起動されるか、最小化されたウィンドウで起動されるか、通常の (つまり、最大化も最小化されていない) ウィンドウで起動されるか、または非表示のウィンドウで起動されるかを示す列挙値の 1 つ。デフォルト値は「標準」です。 |
方法 1
プロセスを開始するには、Process クラスのインスタンスを使用します。[例として SublimeText を示します]
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Sublime Text\\sublime_text.exe";
process.StartInfo = startInfo;
process.Start();
方法 2
Process クラス自体と静的な Start メソッドを使用して、プロセスを開始します。
1つ
Process.Start("C:\\Sublime Text\\sublime_text.exe");
2番
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Sublime Text\\sublime_text.exe";
Process.Start(startInfo);
SatartInfo の Arguments と ArgumentList について
ArgumentList : アプリケーションの起動時に使用するコマンド ライン引数のコレクションを取得します。リストに追加された文字列を最初にエスケープする必要はありません。
ArgumentList プロパティと Arguments プロパティは互いに独立しており、同時に使用できるのはどちらか 1 つだけです。2 つの API の主な違いは、ArgumentList によって提供される引数がエスケープされ、Process.Start(info) を呼び出すときにオペレーティング システムに渡される文字列に内部的に生成されることです。したがって、パラメーターを正しくエスケープする方法がわからない場合は、Argumentsの代わりにArgumentList を選択する必要があります。