关于VC隐藏DOS窗体方法

在VC下要隐藏黑色的DOS窗口,方法可以添加语句

#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )
   
  强制制定入口点,(VC2008)一定要放在程序开头!

 

在VC6.0 可为

#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )
     int main(int argc, char* argv[])
    {
        MessageBox(NULL, "测试", "提示", MB_OK);
        return 0;
    }

在VC2008下,则为

#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )

#include "stdafx.h"
     #include "windows.h"
     #include <tChar.h>

int _tmain(int argc, _TCHAR* argv[])
     {
    
       MessageBox(NULL,_T("你好"),_T("提示"),0);

 return 0;
     }

 

 

另行几种方法

/subsystem:console /entry:mainCRTStartup (ANSI版)

/subsystem:console /entry:wmainCRTStartup (UNICODE版)

Windows应用程序:

/subsystem:windows /entry:WinMain (ANSI版)

/subsystem:windows /etnry:wWinMain (UNICODE版)

入口地址和子系统也可以进行不关联(非默认)设置。这样的话可以写这样的程序:

//强行设置入口地址

#pragma comment(linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"")

int main(int argc, char** argv)

{

    MessageBox(NULL, "hello", "Notice", MB_OK);

    return 0;

}

也可以写这样的程序:

#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup)

void main()

{

for(int i=0; i<100000000;i++)

;

}

上面的程序就可以隐藏console窗口,但如果用system()调用系统命令时还是

会有黑色的窗口一闪而过(跟用BAT就没什么差别了),用于“秘密”程序还是有不足。

你可能感兴趣的:(windows,测试,dos,null,System,linker)