显示/隐藏 C# 控制台应用程序的控制台窗口
我用谷歌搜索有关如何隐藏自己的控制台窗口的信息。令人惊讶的是,我能找到的唯一解决方案是涉及 FindWindow()
的 hacky 解决方案,通过其标题查找控制台窗口。我对 Windows API 进行了更深入的研究,发现有一种更好、更简单的方法,所以我想将其发布在这里供其他人查找。
如何隐藏(和显示)与我自己的 C# 控制台应用程序关联的控制台窗口?
I googled around for information on how to hide one’s own console window. Amazingly, the only solutions I could find were hacky solutions that involved FindWindow()
to find the console window by its title. I dug a bit deeper into the Windows API and found that there is a much better and easier way, so I wanted to post it here for others to find.
How do you hide (and show) the console window associated with my own C# console application?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
只需转到应用程序的“属性”并将“输出类型”从“控制台应用程序”更改为“Windows 应用程序”即可。
Just go to the application's Properties and change the Output type from Console Application to Windows Application.
方法如下:
Here’s how:
您可以执行相反的操作,并将应用程序输出类型设置为:Windows 应用程序。然后将此代码添加到应用程序的开头。
如果
showConsole
为true
,此代码将显示控制台You could do the reversed and set the Application output type to: Windows Application. Then add this code to the beginning of the application.
This code will show the Console if
showConsole
istrue
如果您想隐藏控制台本身,为什么需要控制台应用程序? =)
我建议将项目输出类型设置为Windows 应用程序,而不是控制台应用程序。它不会显示控制台窗口,但会执行所有操作,就像控制台应用程序一样。
Why do you need a console application if you want to hide console itself? =)
I recommend setting Project Output type to Windows Application instead of Console application. It will not show you console window, but execute all actions, like Console application do.
请参阅我的帖子:
在 Windows 应用程序中显示控制台
您可以制作一个Windows 应用程序(带或不带窗口)并根据需要显示控制台。使用此方法,控制台窗口永远不会出现,除非您明确显示它。我将它用于双模式应用程序,我想在控制台或 GUI 模式下运行,具体取决于它们的打开方式。
See my post here:
Show Console in Windows Application
You can make a Windows application (with or without the window) and show the console as desired. Using this method the console window never appears unless you explicitly show it. I use it for dual-mode applications that I want to run in either console or gui mode depending on how they are opened.
“只是为了隐藏”,您可以:
将输出类型从控制台应用程序更改为Windows应用程序,
而不是
Console.Readline/key
您可以在最后使用new ManualResetEvent(false).WaitOne()
来保持应用程序运行。"Just to hide" you can:
Change the output type from Console Application to Windows Application,
And Instead of
Console.Readline/key
you can usenew ManualResetEvent(false).WaitOne()
at the end to keep the app running.根据 Timwi 的回答,我创建了一个辅助类来包装所需的代码:
Following from Timwi's answer, I've created a helper class to wrap the needed code:
如果您不想依赖于窗口标题,请使用以下命令:
...
If you don't want to depends on window title use this :
...
如果您在集成小批量应用程序时没有问题,可以使用这个名为 Cmdow.exe 这将允许您根据控制台标题隐藏控制台窗口。
将 exe 添加到解决方案中,将构建操作设置为“内容”,将“复制到输出目录”设置为适合您的内容,cmdow 将在运行时隐藏控制台窗口。
要使控制台再次可见,您只需更改参数
If you don't have a problem integrating a small batch application, there is this program called Cmdow.exe that will allow you to hide console windows based on console title.
Add the exe to the solution, set the build action to "Content", set Copy to Output Directory to what suits you, and cmdow will hide the console window when it is ran.
To make the console visible again, you just change the Arguments
要在使用 csc 编译器时将输出类型从控制台应用程序更改为 Windows 应用程序,请将
-target:winexe
添加到 csc.exe 命令中,如下所示:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe -out:example.exe -target:winexe example.cs
To change the Output type from Console Application to Windows Application when using csc compiler add
-target:winexe
to the csc.exe command like that:C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe -out:example.exe -target:winexe example.cs