在Windows操作系统中隐藏C程序的控制台

时间:2010-03-11 03:56:31

标签: c++ c windows

我想在运行应用程序时隐藏我的C控制台。如何让我的应用程序在后台运行?

4 个答案:

答案 0 :(得分:5)

默认情况下,main()的程序编译为SUBSYSTEM:CONSOLE应用程序并获取控制台窗口。如果您拥有应用程序启动的其他进程,则可以通过以下方法之一将它们修改为窗口化应用程序:

  • 修改它们以使用WinMain()代替main()。这是典型的方法,但需要修改代码。 (如果使用main()的原因是为了便于访问argc / argv,MSVC会为窗口化应用程序提供全局__argc / __argv等效项。)
  • 通过/SUBSYSTEM:WINDOWS /ENTRY:main的{​​{1}}参数明确指定子系统和入口点。
  • 事后使用link.exe更改子系统类型。如果您没有对衍生进程的源代码访问权限,那么这个可能很有用。

答案 1 :(得分:2)

最简单的方法是使用Windows窗体项目而不是控制台,然后隐藏启动窗体。另一种选择当然是Windows服务,但这可能有点过分......

答案 2 :(得分:0)

如果我没记错的话,就没办法以编程方式进行。有选项可以做到这一点。我想我过去通过创建一个Windows项目来完成它,但是没有Windows Forms代码(我只是包含来自我的控制台应用程序的文件)。没有弹出控制台窗口。我相信我通过更改GUI中的选项在Code::Blocks中完成了一次。对不起,我不能具体,但我使用的是Visual Studio 2010 RC,我在那里做的方式可能与你的不一样。

您的评论让我觉得您正在催生流程。你通过你调用的函数来完成它。我不知道你正在使用什么语言(我会假设是C,因为你说你正在启动你创建的C应用程序?),但是有一个标志要说隐藏窗口或(或者标记你不要设置为不显示它或使用执行相同操作的替代功能,但以不同的方式启动该过程。试试shellexecute和system()。

答案 3 :(得分:0)

CreateProcessDETACH_PROCESS标记一起使用。