Pythonプログラムをウィンドウを開かずにC#から実行

投稿日: 2010-02-02 06:24:25

Pythonで作ったバッチプログラムをタスクスケジューラに登録したところ、どうやってもウィンドウが開いてしまって、隠すことができない。 .batのショートカットを作ったりしても駄目。 そこで C#からPythonを Process.Start でウィンドウを開かずに起動して標準出力の結果を取得することにした。
using System.Diagnostics; ~~~~~~~~~~~~~ ProcessStartInfo psInfo = new ProcessStartInfo(); psInfo.FileName = @"C:\Python25\python.exe"; // 実行するファイル psInfo.Arguments = @"C:\tmp\batch.py";// 引数 psInfo.WorkingDirectory = @"C:\tmp\";// 作業ディレクトリ psInfo.CreateNoWindow = true; // コンソール・ウィンドウを開かない psInfo.UseShellExecute = false; // シェル機能を使用しない psInfo.RedirectStandardOutput = true; // 標準出力をリダイレクト Process p = Process.Start(psInfo);// アプリの実行開始 string output = p.StandardOutput.ReadToEnd(); // 標準出力の読み取り textBox1.Text = output;
タスクマネージャを見るとPython.exeが起動して終了しているのが確認できる。 なんか遠回り。wxPyhtonやIronPythonという選択肢もあったが今回はこの方法で解決。