大家都知道,当编写一个win32 console application时,当运行此类程序的时候

默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序

中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自

动退出.

下面就介绍一下,如何隐藏win32 console application的console窗口

因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译

器的链接开关选项(也就是linker选项).

首先我们来看一下linker的 /subsystem 选项

该选项的语法形式如下:

/SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|

EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|Windows |Windows CE}

[,major[.minor]]

这个链接选项告诉操作系统 如何运行可执行文件

CONSOLE:

win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似DOS

窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下

该应用程序就是一个控制台应用程序

Extensible Firmware Interface

和CPU 具体架构相关的一个参数选项,并不常用,在这里暂不详细介绍.

如果对此有兴趣的可以访问intel主页来查看相关内容

NATIVE;

设备驱动 器选项,如果/DRIVER:WDM选项被设定的话,该链接选项(NATIVE)就为默认选项

POSIX:

在Windows NT 种运行在POSIX子系统上的应用程序

WINDOWS:

该类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建,简而言之

就是一个标准的Win32 application,其入口地址为WinMain()函数或者wWinMain()函数的地址

如果你在应用程序种定义的主函数为WinMain或者wWinMain,在默认情况下该应用程序就是一个

Win32 Application !

WINDOWSCE:

运行在windows CE上的应用程序

major and minor (optional):

主版本号和次版本号,该选项为可选,该选项为0~65535之间的十进制整数

从上面可以看出如果我们建立一个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/"" ) // 设置入口地址

int main(int argc, char* argv[])

{

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

return 0;

}

在默认情况下链接器看到/subsystem下是windows选项的时候,它会自动寻找WinMain或者wWinMain

但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!

上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的

project->setting->link->project option中手工改动!

http://blog.csdn.net/harbinzju/article/details/5781973

qt 隐藏控制台_在控制台程序中隐藏控制台窗口相关推荐

  1. python如何隐藏密码_在python脚本中隐藏密码(仅限不安全的混淆)

    Base64编码是在标准库中,并将停止肩膀冲浪者: >>> import base64 >>> print base64.b64encode("passw ...

  2. 在控制台程序中隐藏控制台窗口

    在控制台程序中隐藏控制台窗口 大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只 ...

  3. 在Windows程序中打开控制台的程序

    //在Windows程序中打开控制台的程序 #include <stdio.h> #include <io.h> #include <fcntl.h> BOOL C ...

  4. 在WEB程序中隐藏后门

    作者: 空虚浪子心 在很多商业程序中,程序员也许会出于某种目的,在程序中留下后门.我们不讨论这样做的目的是什么,只谈谈如何在程序中隐藏一个"终极后门".首先给大家看一个例子,去年我 ...

  5. 慕课软件质量保证与测试(第九章.程序中隐藏错误数量估计)

    慕课金陵科技学院.软件质量保证与测试.第九章.软件质量与质量保证.程序中隐藏错误数量估计 0 目录 9 软件质量与质量保证 9.2 程序中隐藏错误数量估计 9.2.1 课堂重点 9.2.2 测试与作业 ...

  6. 关于在自己的程序中使用其它窗口的菜单

    // //关于在自己的程序中使用其它窗口的菜单 //在自己的应用程序中控制其它程序的菜单,首先要获取其它程序主窗口的句柄( 为HWND类型),其次向需要控制的菜单发出 //WM_COMMAND消息( ...

  7. 从硬盘的隐藏分区启动计算机,Windows 10中隐藏分区、取消分区,看这个就够了!...

    原标题:Windows 10中隐藏分区.取消分区,看这个就够了! 在计算机上隐藏驱动器或分区后用户将无法再看到它.隐藏分区可以带来许多好处,这就是为什么Mac和Windows都提供了几个内置工具来隐藏 ...

  8. 在控制台程序中隐藏控制台窗口!

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...

  9. MFC应用程序中添加控制台窗口

    在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息:另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行. 其实有一种方法可以更 ...

最新文章

  1. mysql5.7与8.0用那个_MySQL 5.7 vs 8.0,哪个性能更牛?
  2. Android Studio开发环境及第一个项目
  3. HTML5手机页面里面如何把长按复制避免
  4. System.LazyT 延迟加载
  5. 修改html页面的title,可以自定义
  6. 配置Tomcat使用HTTP/2
  7. svn 验证位置失败 Authorization failed
  8. 在windows平台下搭建Django项目虚拟环境
  9. resample函数_使用Pandas的resample函数处理时间序列数据的技巧
  10. java中的网络入门2(J2SE入门19)
  11. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(2):开发环境及相关的使用技巧
  12. 在VMware Update Manager(VUM)里添加HP的补丁源
  13. 华为手环B2鸿蒙,【华为手环B2】运动全能冠军(附《GIF版手势操作秘籍》)
  14. 【技术分享】使用opencv进行火焰分割
  15. EXCEL中如何提取身份证出生日期和性别信息以及检验身份证号码的正确性
  16. 自适应模拟退火粒子群算法BSAPSO(学习笔记_03)
  17. 捕获SQLIntegrityConstraintViolationException
  18. 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列
  19. Android中免root的hook框架学习——whale(二)实战hook java方法
  20. 别再问我做一个网站多少钱了!

热门文章

  1. Android游戏尸体– ArkDroid开发
  2. laravel 安装报错 Uncaught ReflectionException: Class view does not exist
  3. 2023年最新商品详情接口API(JSON格式)
  4. linux 查看samtools版本,Samtools版本更新
  5. JAVA中将两个列表(List)合并为一个列表
  6. 你试过手写转文字吗?用什么软件好
  7. 中南大学计算机程序设计实践,我校在湖南省第七届大学生计算机程序设计竞赛中载誉归来...
  8. CSS基础学习--16 Float(浮动)
  9. 2021年危险化学品经营单位安全管理人员考试题库及危险化学品经营单位安全管理人员找解析
  10. 新版知乎登录request登录(1)(函数式编程)