プロセス(Process) . shell
外部プロセスの実行
using System.Diagnostics;
using System.IO;
// 外部プロセス ( Program Instance を起動する )
Process ps = new Process();
// 実行 File名
// 引数がなければ 必須ではない
ps.StartInfo.Arguments = "localhost";
// stdout を取得するには 次の2つの設定が必要
// プロセスの出力をリダイレクトする。
ps.StartInfo.RedirectStandardOutput = true;
// Windowsのデフォルトシェルを利用しないようにする。
ps.StartInfo.UseShellExecute = false;
// 設定が完了したら実行開始
ps.Start();
// 出力を読み取る
string s = ps.StandardOutput.ReadToEnd();
//WaitForExitはReadToEndの後である必要がある
//(親プロセス、子プロセスでブロック防止のため)
ps.WaitForExit();
/*
Textbox に文字列を追加
処理の実行におうじて, log を追加するには, ps の実行. text の追加を 別 thread でしないといけない
window の描画 という処理が更新されないため
*/
TextBox1.Text += s;
// コンソールプログラムでもウィンドウ非表示に効果はある。
{
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; //通常
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //非表示
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; //最小化
hPsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; //最大化
ps.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //非表示
}
実行中のプロセスを調べる
// 現在の process ( 2 個目の場合 ) を取得する
Process hThisProcess = Process.GetCurrentProcess();
MessageBox.Show( hThisProcess.ProcessName );
// process 名から listup する
Process[] hProcesses = Process.GetProcessesByName(hThisProcess.ProcessName);