有时侯写一个控制台程序,不需要在前台出现类似DOS窗口的console窗口,这就要隐藏它;隐藏它很简单,只需在程序前面加上

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

就可以了。

此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).   
首先我们来看一下linker的/subsystem选项:    
该选项的语法形式如下:   
/SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}  [,major[.minor]]   
这个链接选项告诉操作系统如何运行可执行文件   
CONSOLE:win32字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似DOS 窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下该应用程序就是一个控制台应用程序    
WINDOWS:类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建。简而言之就是一个标准的Win32   application,其入口地址为WinMain()函数或者wWinMain()函数的地址。如果你在应用程序中定义的主函数为WinMain或者wWinMain,在默认情况下该应用程序就是一个 Win32   Application。
从上面可以看出如果我们建立一个win32  console  application的话,linker的/subsystem选项应该为 CONSOLE,可以在VC开发环境的project->setting->link->project   option中看到!   
我们知道用VC编写的程序,运行的时候是需要C\C++运行库支持的.当我们运行一个C/C++程序的时候 链接器会首先寻找应用程序的启动函数,例如你建立了一个console程序的话,编译器得链接开关会是以下这种形式   
  /subsystem:"console"   /entry:"mainCRTStartup"       (ANSI)   
  /subsystem:"console"   /entry:"wmainCRTStartuup"   (UNICODE)   
如果你建立了一个win32   application,编译器得链接开关则会是一下形式   
  /subsystem:"windows"   /entry:"WinMain"       (ANSI)   
  /sbusystem:"windows"   /entry:"wWinMain"     (UINCODE)

上面的两种形式可以再project->setting->link->project   option中看到。上面的subsystem和entry并不需要都设置,如果你只设置了/subsystem:"console" 的话,那么默认的entry开关在默认情况下应为/entry:"mainCRTStartup" 。反之,如果你在应用程序中定义了main函数的话,默认情况下,你的/subsystem开关应该为/system:"console" 。

在默认情况下/subsystem 和/entry开关是匹配的,也就是console对应mainCRTStartup或者wmainCRTStartup,windows对应WinMain或者wWinMain。但是我们也可以通过手动改动的方式使他们不匹配    
例如我们可以这样改动   
#pragma   comment(   linker,   "/subsystem:\"windows\"   /entry:\"mainCRTStartup\""   )  //   设置入口地址     
但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!   
上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的   
  project->setting->link->project   option中手工改动!

隐藏控制台程序的dos窗口相关推荐

  1. 隐藏控制台程序的窗口

    网上有很多的例子都说可以修改linker的subsystem熟悉来实现. #pragma comment( linker, "/subsystem:\"windows\" ...

  2. 隐藏控制台(console)窗口

    隐藏控制台(console)窗口 #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" ) // ...

  3. powershell 调用API显示或隐藏指定程序的主窗口

    powershell 调用API显示或隐藏指定程序的主窗口 001. 前言 一同事碰上这种情况:某个单实例的程序不知为何挂在后台运行,托盘中也找不到图标(一般是有的),但可以在任务管理器中看到该程序处 ...

  4. VC++ 隐藏控制台程序窗口

    转自:http://hi.baidu.com/sicceer/blog/item/d9c35a810d15c4c8bc3e1ec8.html 设置 #pragma comment( linker, & ...

  5. 如何隐藏控制台程序的窗口

    方法一:(会有闪一下黑屏) 在main入口处调用一下FreeConsole   ()试试     要显示的时候调用一下AllocConsole   ()就可以了 方法二 我说的两个缺点     1.可 ...

  6. tomat服务器启动startup.bat程序,解决dos窗口中文乱码问题

    安装tomcat后,解压之后,在安装包的bin目录的 startup.bat程序点击启动时,电脑弹出的dos窗口的信息中文乱码 . 解决方案步骤: 1.找到tomcat安装包下的conf目录下的log ...

  7. 计算机怎么隐藏应用程序,在窗口中隐藏 RemoteApp 程序弹出窗口

    修补程序信息 可以从 Microsoft 获得受支持的修复程序.然而,此修补程序仅用于解决本文中描述的问题.此修复程序仅适用于遇到本文中描述的问题的系统.此修补程序可能会接受进一步的测试.因此,如果这 ...

  8. C++ 控制台程序,窗口程序,静态库,动态库的区别

    创建C++程序 控制台程序  创建完成发现编译器给我们生成了一个.cpp文件,并且存在main函数(说明可以运行) 按F5编译链接并运行 出现DOS窗口(但我们说写与窗口相关的代码,说明是操作系统提供 ...

  9. 关于如何用od反汇编win32 控制台程序

    *********************************************************** 如何用od反汇编win32 控制台程序(类似dos程序)呢? ********* ...

最新文章

  1. Depends, python2.7-minimal (= 2.7.15_rc1-1) 问题解决方法使用 aptitude 安装以及与 apt-get 的区别
  2. 关于ccflow的编译错误
  3. Design Pattern Strategy C
  4. php和python哪个学起来简单一点-python和php哪个容易学
  5. Dubbo生产者消费者配置
  6. Django model反向关联名称的方法(转)
  7. visual studio可以开发python吗_Visual Studio上开发Python六大功能
  8. Struts2中 Path (getContextPath与basePath)
  9. 绝地求生大逃杀,改配置
  10. 跨平台、跨语言应用开发工具,Elements 介绍
  11. 质数之和c语言编程,C程序检查一个数字是否可以表示为两个质数之和
  12. vs2017修改服务器地址大全,vs2017更改默认pip安装服务器地址
  13. 30分钟 带你浅入seajs源码
  14. 操作系统概念第四章部分作业题答案
  15. 计算机word表格求和怎么操作,Word中的表格如何自动求和
  16. 微调电位器命名规则_电位器
  17. 大宗商品交易平台支持多种交易模式,你了解多少?
  18. Spring5基础知识
  19. BT结束,高宽带有何用?
  20. 常见软件设计原则总结

热门文章

  1. html的鼠标手怎么去掉,flex htmlText属性和Label设置鼠标手形状
  2. 你知道map,filter,sort,reduct,every, some 的用法吗?
  3. 如何用计算机求素数,在线质数(素数)计算器
  4. Python爬虫-安某某客新房和二手房
  5. 从网课安全到多场景挑战,网易云信构建全方位安全合规屏障
  6. C语言_钩子函数(回调函数)
  7. 换挡周期下,谁将成为厨电品牌的进取者?
  8. beego使用API自动化文档生成swagger时,routers目录下无法生成commentsRouter_controllers.go文件
  9. 一文了解新型AMM方案Caspian,解决L2导致的流动性碎片化问题
  10. [PTA]练习5-3 数字金字塔