【发布时间】:2011-07-19 15:27:45
【问题描述】:
我正在尝试使用 System.Diagnostics.Process 类在远程计算机上创建进程。
我能够创建一个流程。但问题是,创建服务需要很长时间并且会显示控制台窗口。
另一个烦人的事情是控制台窗口显示在我的窗口窗体顶部,我无法在该窗体上执行任何其他操作。
我已经设置了所有属性,例如CreateNoWindow = true,
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
但它仍然显示控制台窗口。即使我已经将输出和错误重定向到单独的流,但没有运气。
还有其他方法可以隐藏控制台窗口吗?请帮帮我。
这是我用来执行 sc 命令的部分代码。
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
【问题讨论】:
-
你试过设置
proc.StartInfo.RedirectedStandardOutput = true吗?我已经让它与 Windows 应用程序一起使用。 -
任何带有完整源代码示例的最终解决方案?
-
在 Windows console 应用程序中,只需设置 UseShellExecute - 没有重定向或其他任何东西 - 对我有用。见here。
-
就控制台窗口打开和锁定表单而言,您应该将进程作为任务或在新线程上运行
-
你为什么要设置
UseShellExecute和CreateNoWindow两次?
标签: c# process console-application