思路:改变SUBSYTEM和entry。
如下:
#pragma comment(linker, "/subsystem:windows /entry:WinMainCRTStartup")
#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup")
#pragma comment(linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment(linker, "/subsystem:console /entry:WinMainCRTStartup")
四种改变窗口程序和入口点方法。
入口点对应的启动函数如表:
应用程序类型 | 入口点函数 | 嵌入的可执行文件的启动函数 |
ANSI的GUI程序 | _tWinMain(WinMain) | WinMainCRTStartup |
Unicode的GUI程序 | _tWinMain(wWinmain) | wWinMainCRTStartup |
ANSI的CUI程序 | _tmain(Main) | mainCRTStartup |
Unicode的CUI程序 | _tmain(Wmain) | wmainCRTStartup |
隐藏win32控制台程序代码如下:
#include <iostream>
#include <Windows.h>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"" )
int wmain()
{
std::cout << "Hello World!\n";
return 0;
}