在C#控制台应用程序中隐藏控制台窗口


105

问题是,我真的不希望显示控制台窗口...但是解决方案应该正在运行。我的意思是,我想让应用程序在后台运行,而不会出现任何窗口。


2
您能否为我们提供有关该应用程序应该做什么的更多信息?听起来应该是服务还是Windows应用程序?有了一点关于目的的知识,我们就能提供更多帮助,并提出解决此问题的最佳方法。
戴夫

它的键盘记录器应用程序。我使用Windows服务,但无法在Windows服务中获取关键状态
SOF用户

Answers:


187

将输出类型从控制台应用程序更改为Windows应用程序。这可以在Visual Studio中的“ 项目”->“属性”->“应用程序”下完成:

替代文字


4
控制台窗口闪烁并返回。如何使应用程序完全没有窗口运行?
SOF用户

@SOF用户:您如何启动应用程序?通过双击资源管理器还是从“开始”菜单?
德克·沃尔玛

我也把Console.ReadLine();
SOF用户

16
删除Console.ReadLine。如果没有控制台窗口,则没有任何意义。
德克·沃尔玛

1
@KarolŻurowski:这里的想法是,您可以将其用于还带有某种形式的UI(例如,系统托盘中的图标)的应用程序或执行特定任务然后在完成后自动退出的应用程序。如果两者都不存在,则该应用程序将在后台运行,直到注销/关闭或被明确杀死(例如使用任务管理器)。
德克·沃尔玛

25

将您的应用程序类型更改为Windows应用程序。您的代码仍将运行,但是它将没有控制台窗口,也没有标准窗口窗口,除非您创建了一个。


2
控制台窗口闪烁并返回。如何使应用程序完全没有窗口运行?
SOF用户

您确保它不会终止。没有更多信息,实际上没有什么要说的。该程序做什么?它会循环运行吗?
Lasse V. Karlsen

1
将应用程序“输出类型”更改为“ Windows应用程序”对我有用。
hellowahab '16

12

最后代替Console.Readline/key您可以使用new ManualResetEvent(false).WaitOne()。这对我来说很好。


3

也许您想尝试创建Windows Service应用程序。它将在后台运行,没有任何用户界面。


3
Windows服务无法获取按键事件
SOF用户,2010年

1
根据您的应用程序,服务受到严格限制,从Windows Vista开始,它们被强制进入会话0,因此无法在其他会话中执行任何操作,例如显示弹出消息。
马特

1
@Matt“无法在其他会话中执行任何操作”并非完全正确。这是一个服务的代码项目,该项目在登录用户的桌面上打开管理命令提示符。 codeproject.com/Articles/35773/…–
Qodex

0

将输出类型从Console Application更改为Windows Application

而不是Console.Readline/key您可以new ManualResetEvent(false).WaitOne()在最后使用来保持应用程序的运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.