当我运行我的应用程序时,我想隐藏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服务,但这可能是矫枉过正…
使用CreateProcess
和DETACH_PROCESS
标志。
如果我没有记错的话,就没有办法通过编程来完成。 有选项可以做到这一点。 我想我已经做了过去创建一个Windows项目,但没有Windows窗体代码(我只是包括我的控制台应用程序中的文件)。 没有控制台窗口弹出。 我相信我通过在GUI中更改一个选项在Code :: Blocks中做了一次。 我很抱歉,我不能具体,但我使用Visual Studio 2010 RC和我在那里做的方式可能不会像你的一样。
你的评论让我觉得你正在产卵的过程。 你通过你所调用的功能来做到这一点。 我不知道你在用什么语言(我会假定C,因为你说你正在启动一个你创建的C应用程序?),但是有一个标志可以隐藏窗口,或者是一个标志不要设置为不显示它)或者使用一个替代的函数来执行相同的操作,但以不同的方式启动该过程。 试试shellexecute和system()。