运行批处理文件时如何隐藏cmd窗口?
我使用以下代码运行批处理文件
process = new Process();
process.StartInfo.FileName = batchFilePath;
process.Start();
最佳答案
如果proc.StartInfo.UseShellExecute是 false ,那么您正在启动该过程,可以使用:
proc.StartInfo.CreateNoWindow = true;
如果proc.StartInfo.UseShellExecute为 true ,则操作系统正在启动进程,您必须通过以下方式为进程提供“提示”:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
但是,被调用的应用程序可能会忽略此后一个请求。
如果使用UseShellExecute = false ,则可能要考虑重定向标准输出/错误,以捕获生成的任何日志记录:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
proc.StartInfo.RedirectStandardError = true;
proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
并具有像
private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow;
}
在an MSDN blog上有一个涵盖
CreateNoWindow
的好页面。Windows中还有一个错误,如果您传递用户名/密码,则该错误可能会引发对话框并破坏
CreateNoWindow
。详情http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98476
http://support.microsoft.com/?kbid=818858