控制台应用程序控制台窗口-Visual C ++

时间:2018-08-10 13:15:24

标签: c++ visual-studio console-application

我已经在控制台应用程序Visual Studio中制作了C ++代码。我的问题是如何使最终exe在没有控制台的情况下运行(仅从任务管理器中看到此过程)

到目前为止,我所看到的解决方案都使控制台出现一秒钟然后退出。我不要这个根本不出现。

Visual Studio中是否有任何选项或标志可以做到这一点? (类似于g ++中的-mwindows标志)

先感谢

1 个答案:

答案 0 :(得分:2)

Project Properties-> Configuration Properties-> Linker页面上的System中,您需要将SubSystem的值设置为{{1} }。新控制台应用程序项目的默认值为Windows (/SUBSYSTEM:WINDOWS),这将导致Windows在启动程序时分配新控制台或将其附加到父进程的控制台。

enter image description here


您还需要将main函数更改为WinMain。 WinMain的签名是:

Console (/SUBSYSTEM:CONSOLE)

使用上述方法,子控制台进程仍将创建控制台窗口。由于您在评论中表示要使用int CALLBACK WinMain( _In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { // Your code here } ,因此,您真的无法轻松地使用通过popen调用CreateProcess的常规方式。

您真正想要做的是将一个隐藏的控制台窗口附加到您的进程,并允许您的子进程继承它。这可能不是最好的代码,但这是一种实现方法:

SW_HIDE