gpt4 book ai didi

c# - 从 Process.Start C# 隐藏控制台窗口

转载 作者:IT王子 更新时间:2023-10-29 03:37:21 26 4
gpt4 key购买 nike

我正在尝试使用 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();

最佳答案

尝试在不显示控制台窗口的情况下启动进程时,我遇到了类似的问题。我测试了几种不同的属性值组合,直到找到一种表现出我想要的行为的组合。

这里有一个页面详细说明了为什么必须将 UseShellExecute 属性设置为 false。
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx

在页面的备注部分下:

If the UseShellExecute property is true or the UserName and Password properties are not null, the CreateNoWindow property value is ignored and a new window is created.

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = fullPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;

Process processTemp = new Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
processTemp.Start();
}
catch (Exception e)
{
throw;
}

关于c# - 从 Process.Start C# 隐藏控制台窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com