我开发了一个实用程序,它将获取列表中所有服务器的时间。
System.Diagnostics.Process p;
string server_name = "";
string[] output;
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "net";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StandardOutput.ReadLine().ToString()
执行此代码时。 Cmd 提示屏幕即将到来。我想将其隐藏起来。我能做些什么呢?
答案 0 :(得分:12)
您可以告诉流程不使用窗口或将其最小化:
// don't execute on shell
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
// don't show window
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
使用UseShellExecute = false
您可以重定向输出:
// redirect standard output as well as errors
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
执行此操作时,应使用输出缓冲区的异步读取,以避免因填充过量缓冲区而导致死锁:
StringBuilder outputString = new StringBuilder();
StringBuilder errorString = new StringBuilder();
p.OutputDataReceived += (sender, e) =>
{
if (e.Data != null)
{
outputString.AppendLine("Info " + e.Data);
}
};
p.ErrorDataReceived += (sender, e) =>
{
if (e.Data != null)
{
errorString.AppendLine("EEEE " + e.Data);
}
};
答案 1 :(得分:5)
尝试使用ProcessWindowStyle
这样的枚举;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
隐藏的窗口样式。窗口可以是可见的或隐藏的。该 系统通过不绘制它来显示隐藏的窗口。如果有一个窗口 隐藏,它被有效禁用。隐藏的窗口可以处理 来自系统或其他窗口的消息,但无法处理 来自用户或显示输出的输入。通常,应用程序可以 在自定义窗口外观时隐藏新窗口, 然后使窗口样式正常。使用 ProcessWindowStyle.Hidden , ProcessStartInfo.UseShellExecute 属性必须 false 。
答案 2 :(得分:1)
试试这两个
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
或检查这个
要在没有任何窗口的情况下运行子进程,
使用CreateNoWindow属性并设置UseShellExecute。
ProcessStartInfo info = new ProcessStartInfo(fileName, arg);
info.CreateNoWindow = true;
info.UseShellExecute = false;
Process processChild = Process.Start(info);
我建议你阅读MSDN的这篇文章:How to start a console app in a new window, the parent's window, or no window
答案 3 :(得分:0)
添加系统参考。
using System.Diagnostics;
然后使用此代码在hiden CMD窗口中运行命令。
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();