端くれプログラマの備忘録 C# [C#] 別ウィンドウを表示せずに外部プログラムを起動して終了まで待つ

[C#] 別ウィンドウを表示せずに外部プログラムを起動して終了まで待つ

コマンドプロンプトで実行される外部プログラムをバッチで繰り返し実行したい。だけど、実行中は別の作業を行いたいので、外部プログラムが実行されるたび新しいウィンドウが開いてフォーカスが奪われるのはいただけない。

別ウィンドウを表示せずに外部プログラムを起動して終了まで待つには、

  • 新しいウィンドウを表示しない
  • 新しいウィンドウを隠す

の何れかを明示して外部プログラムを実行すればよい。

サンプルコード

using System.Diagnostics;
static void Execute(string program, string opts)
{
    ProcessStartInfo info = new ProcessStartInfo(program);
    //info.CreateNoWindow = true; //ウィンドウを表示しない
    info.WindowStyle = ProcessWindowStyle.Hidden; //ウィンドウを隠す
    info.Arguments = opts;
    System.Diagnostics.Process hProcess;
    hProcess = System.Diagnostics.Process.Start(info);
    hProcess.WaitForExit();
    hProcess.Close();
    hProcess.Dispose();
}

参考サイト

コマンド・プロンプトを表示せずにコンソール・アプリケーションを実行するには?[C#、VB] - @IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/654nowinexec/nowinexec.html