プロセス(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);