我已经在控制台应用程序Visual Studio中制作了C ++代码。我的问题是如何使最终exe在没有控制台的情况下运行(仅从任务管理器中看到此过程)
到目前为止,我所看到的解决方案都使控制台出现一秒钟然后退出。我不要这个根本不出现。
Visual Studio中是否有任何选项或标志可以做到这一点? (类似于g ++中的-mwindows标志)
先感谢
答案 0 :(得分:2)
在Project Properties
-> Configuration Properties
-> Linker
页面上的System
中,您需要将SubSystem
的值设置为{{1} }。新控制台应用程序项目的默认值为Windows (/SUBSYSTEM:WINDOWS)
,这将导致Windows在启动程序时分配新控制台或将其附加到父进程的控制台。
您还需要将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