我想運行將輸出文件的控制檯應用程序。如何在使用Process.Start時隱藏控制檯應用程序用戶界面?
我的用戶下面的代碼:
Process barProcess = Process.Start("bar.exe", @"C:\foo.txt");
在運行此控制檯窗口出現。我想隱藏控制檯窗口,以便用戶看不到它。
這可能嗎?是否使用Process.Start啓動另一個控制檯應用程序的最佳方式?
我想運行將輸出文件的控制檯應用程序。如何在使用Process.Start時隱藏控制檯應用程序用戶界面?
我的用戶下面的代碼:
Process barProcess = Process.Start("bar.exe", @"C:\foo.txt");
在運行此控制檯窗口出現。我想隱藏控制檯窗口,以便用戶看不到它。
這可能嗎?是否使用Process.Start啓動另一個控制檯應用程序的最佳方式?
Process p = new Process();
StreamReader sr;
StreamReader se;
StreamWriter sw;
ProcessStartInfo psi = new ProcessStartInfo(@"bar.exe");
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.CreateNoWindow = true;
p.StartInfo = psi;
p.Start();
這將啓動一個子進程,而不顯示控制檯窗口,將允許StandardOutput的捕捉等
我們在過去通過以編程方式使用命令行執行我們的過程來完成此操作。
簽入ProcessStartInfo並設置WindowStyle = ProcessWindowStyle.Hidden和CreateNoWindow = true。
對於控制檯應用程序,我發現您只需要** WindowStyle = ProcessWindowStyle.Hidden **。你不需要** CreateNoWindow = true **。 – 2010-08-03 06:25:15
如果你想獲取過程在執行過程中的輸出,您可以執行以下操作(示例使用'ping'命令):
var info = new ProcessStartInfo("ping", "stackoverflow.com") {
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
};
var cmd = new Process() { StartInfo = info };
cmd.Start();
var so = cmd.StandardOutput;
while(!so.EndOfStream) {
var c = ((char)so.Read()); // or so.ReadLine(), etc
Console.Write(c); // or whatever you want
}
...
cmd.Dispose(); // Don't forget, or else wrap in a using statement
你的答案是方式更豐富,然後我的+1 – 2009-01-12 20:51:13