「C Sharpの応用 - 外部ソフトウェア」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == 外部ソフトウェアにおいて、実行ファイルを指定して起動する方法とファイルを関連付けられたソフトウェアで起動…」
 
40行目: 40行目:
   
   
  // 外部ソフトウェアを起動する
  // 外部ソフトウェアを起動する
  var Process = System.Diagnostics.Process.Start(psi);
  var Process = System.Diagnostics.Process.Start(ProcessInfo);
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
56行目: 56行目:
   
   
  // 外部ソフトウェアを起動する
  // 外部ソフトウェアを起動する
  System.Diagnostics.Process.Start(psi);
  System.Diagnostics.Process.Start(ProcessInfo);
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
== インスタンスのProcess.Startメソッドを呼び出す ==
ProcessクラスのStartメソッドには、引数を持たないメソッドもある。
このメソッドの戻り値はbool型で、プロセスが起動した時にtrue、それ以外の時はfalseを返す。
以下の例では、インスタンスメソッドを使用している。
<syntaxhighlight lang="c#">
// Processオブジェクトを作成する
var Process = new System.Diagnostics.Process();
// 起動する外部ソフトウェアのパスを設定する
Process.StartInfo.FileName = "notepad.exe";
// 外部ソフトウェアを起動する
// 起動した時はtrueを返す
bool result = Process.Start();
</syntaxhighlight>
<br>
以下の例では、ProcessクラスのStartInfoプロパティで取得できるProcessStartInfoクラスのArgumentsプロパティを使用して、<br>
コマンドライン引数を指定している。
<syntaxhighlight lang="c+#">
// Processクラスを作成する
var Process = new System.Diagnostics.Process();
// 起動する外部ソフトウェアのパスを設定する
Process.StartInfo.FileName = "notepad.exe";
// コマンドライン引数を指定する
Process.StartInfo.Arguments = @"C:\test\test.txt";
// 外部ソフトウェアを起動する
// 起動した時はtrueを返す
bool result = Process.Start();
</syntaxhighlight>
<br>
<u>※注意</u><br>
<u>Processクラスの静的なStartメソッドは、内部でProcessクラスを作成して、Startメソッドを呼び出す。</u><br>
<u>Startメソッドがtrueのを返す時はProcessクラス、falseを返す時はnullを返す。</u><br>
<br><br>
== ファイルを関連付けられた外部ソフトウェアで開く ==
ファイルを関連付けられた外部ソフトウェアで開く場合、上記のセクションの方法で実行できる。<br>
(ただし、InteractionクラスのShellメソッドを使用する方法を除く)<br>
<br>
以下の例では、テキストファイルを関連付けられた外部ソフトウェアで開いている。<br>
<br>
ただし、<code>ProcessStartInfo</code>クラスの<code>UseShellExecute</code>プロパティがtrueである必要がある。<br>
<code>Process</code>クラスの<code>Start</code>メソッドを呼び出す場合、または、<code>ProcessStartInfo</code>クラスを使用して<code>Process</code>クラスの<code>Start</code>メソッドを呼び出す場合は、<br>
<code>UseShellExecute</code>プロパティがfalseになる可能性もあるので注意すること。(<u>初期値はtrueなので、意図的に変更しなければよい</u>)<br>
<syntaxhighlight lang="c#">
// テキストファイルを関連付けられた外部ソフトウェアで開く
var Process = System.Diagnostics.Process.Start(@"C:\test\test.txt");
</syntaxhighlight>
<br>
<u>※注意</u><br>
<u><code>Process</code>クラスの<code>Start</code>メソッドは、</u><br>
<u><code>ProcessStartInfo</code>クラスの<code>UseShellExecute</code>プロパティがtrueの時、<code>ShellExecuteEx</code>メソッドを使用してプロセスを起動する。</u><br>
<u><code>ProcessStartInfo</code>クラスの<code>UseShellExecute</code>プロパティがfalseの時、<code>ProcessStartInfo</code>クラスの<code>UserName</code>プロパティを設定する場合、</u><br>
<u><code>CreateProcessWithLogonW</code>メソッド使用して、設定していなければ<code>CreateProcess</code>メソッドを使用する。</u><br>
<u><code>Interaction</code>クラスの<code>Shell</code>メソッドは、<code>CreateProcess</code>メソッドを使います。</u><br>
<br><br>
<br><br>