屏蔽控制台应用程序窗口
2015-07-19 17:53
274 查看
原文地址:http://www.cnblogs.com/kex1n/archive/2011/04/10/2011254.html
众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。屏蔽控制台应用程序的窗口#pragma
comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相 同。在VC下,连接器对控制台程序设置的入口函数是 mainCRTStartup,mainCRTStartup 再调用你自己编写的 main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,WinMainCRTStartup调用你自己写的 WinMain 函数。
具体设置哪个入口点是由连接器的“/subsystem:”选项参数确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方 式:“CONSOLE|WINDOWS|NATIVE|POSIX”如果这个选项参数的值为“WINDOWS”,则表示该应用程序运行时不需要控制台,有 关连接器参数选项的详细说明请参考 MSDN 库。
下面我们将通过预编译指令来对编译器和连接器进行设置,从而达到我们的目的:例子代码运行后播放Windows系统启动声音三次,然后退出,运行后不会显示控制台窗口。
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib") // 告诉连接器与这个库连接,因为我们要播放多媒体声音
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") // 设置连接器选项
int main(void)
{
PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC);
Sleep(50);
PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC);
Sleep(50);
PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC);
Sleep(50);
return 0;
}
在 IDE 环境中新建一个空的控制台程序,将上述代码添加到工程中,编译运行。
相关文章推荐
- bootstrap 笔记01
- GCC 参数详解
- Linux环境下段错误的产生原因及调试方法小结
- IOS计算文字高度
- bootstrap模态框和select2合用时input无法获取焦点
- badboy+jMeter+jProfile软件测试工具介绍(一)
- 【thinkphp3.1.x】thinkphp3.1.x中有关redis缓存相关的文件
- 关于hibernate的一些恶心的小地方报错(持续更新)
- 系统重装后,Mysql数据库重装加载原来数据库
- Linux下的GitHub安装与简单配置教程
- Tachyon0.6.4+Spark1.3+hadoop2.6.0 配置教程详解
- 基于 OpenFlow 实现网络虚拟化
- 在Windows7上安装MySQL5.6后没有服务,无法启动的问题,报错10061
- piwik阅读(整体结构)
- 股票学习27
- 读取XML文件并生成DataTable
- spark1.4.0基于yarn的安装心得体会
- Python里面如何拷贝一个对象?
- xUtils解析
- 六、数据库适配