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

当我运行我的应用程序时,我想隐藏C的控制台。 我怎样才能让我的应用程序在后台运行?

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

  • 修改它们以使用WinMain()而不是main() 这是典型的方法,但需要修改代码。 (如果使用main()的原因是为了方便访问argc / argv ,MSVC为窗口化的应用程序提供了全局的__argc / __argv等效项。)
  • 通过/SUBSYSTEM:WINDOWS /ENTRY:main显式指定子系统和入口点/SUBSYSTEM:WINDOWS /ENTRY:main link.exe /SUBSYSTEM:WINDOWS /ENTRY:main参数。
  • 事实之后,使用editbin.exe来更改子系统类型。 如果您没有源代码访问产生的进程,这可能是有用的。

最简单的方法是使用Windows Forms项目而不是Console,然后隐藏启动窗体。 另一个选项当然是一个Windows服务,但这可能是矫枉过正…

使用CreateProcessDETACH_PROCESS标志。

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

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