繁体   English   中英

"在 C# 中启动进程而不分散控制台窗口"

[英]Launching process in C# Without Distracting Console Window

我弄清楚如何启动一个进程。 但我现在的问题是控制台窗口(在本例中为 7z)弹出最前面挡住了我的视线并移开我的注意力,打断我的句子,或者每隔几秒我就在做。 它非常烦人,我该如何防止这种情况发生。 我认为 CreateNoWindow 解决了这个问题,但它没有。

注意:有时控制台需要用户输入(是否替换文件)。 所以完全隐藏它可能是一个问题。

这是我当前的代码。

void doSomething(...)
{
    myProcess.StartInfo.FileName = ...;
    myProcess.StartInfo.Arguments = ...;
    myProcess.StartInfo.CreateNoWindow = true;
    myProcess.Start();
    myProcess.WaitForExit();
}

如果我没记错的话,这对我有用

Process process = new Process();

// Stop the process from opening a new window
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;

// Setup executable and parameters
process.StartInfo.FileName = @"c:\test.exe"
process.StartInfo.Arguments = "--test";

// Go
process.Start();

我一直在 C# 控制台应用程序中使用它来启动另一个进程,它会阻止应用程序在单独的窗口中启动它,而不是将所有内容都保存在同一个窗口中。

@galets在你的建议中,窗口仍然被创建,只是它开始最小化。 这对于实际做 acidzombie24 想要的事情会更好:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

试试这个:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;

我必须仔细检查,但我相信您还需要设置UseShellExecute = false 这也让您可以捕获标准输出/错误流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM