C# 在控制台窗口不闪烁的情况下启动conhost.exe

C# 在控制台窗口不闪烁的情况下启动conhost.exe,c#,powershell,visual-studio-2013,sysinternals,C#,Powershell,Visual Studio 2013,Sysinternals,我正在使用VS13(Windows应用程序而不是控制台应用程序)在C#中编写嵌入式powershell主机。我可以很好地调用powershell命令。我遇到的问题是,当invoke函数处理诸如ping、netstat等控制台命令时,它会触发conhost.exe实例的创建。根据我目前的研究,这是Windows7及以上版本的正常行为,但当conhost启动时,它会在屏幕上短暂闪烁控制台 有没有一种方法可以在不闪烁控制台窗口的情况下启动conhost?请记住,我正在处理到powershell管道中的

我正在使用VS13(Windows应用程序而不是控制台应用程序)在C#中编写嵌入式powershell主机。我可以很好地调用powershell命令。我遇到的问题是,当invoke函数处理诸如ping、netstat等控制台命令时,它会触发conhost.exe实例的创建。根据我目前的研究,这是Windows7及以上版本的正常行为,但当conhost启动时,它会在屏幕上短暂闪烁控制台


有没有一种方法可以在不闪烁控制台窗口的情况下启动conhost?请记住,我正在处理到powershell管道中的用户输入,因此测试每个命令并启动一个新进程可能是不实际的

我问这个问题已经有一段时间了,所以我想分享我的答案。基本上,由于我的嵌入式主机位于一个仅在后台运行的应用程序中,因此在处理“本机命令”时,无法防止conhost在屏幕上闪烁。这就是Windows的工作方式。如果我的主机连接到GUI,那么我认为可能有一种重定向输出的方法,但到目前为止,对于我的用例,我无法抑制conhost

您是在使用“启动流程”cmdlet还是什么?您可以使用“-nonewindow”,但这只会将输出重定向到嵌入式主机。powershell invoke函数不会调用底层主机进程。这就是问题所在。你可以看看现有的开源主机,比如ConEmu。我可以在命令窗口中运行ping,而不必看到conhost,但我也可以从调试菜单中显示“真正的控制台”。