去掉控制台程序的黑框框
2017-11-15 01:08
197 查看
有时候写的console的程序有时候只想让它运行,
弹个黑框框 , 挺尴尬的.况且有些代码想在偷偷的执行
这时候就需要一些小技巧了
本来想着记录这个操作大,发现了更好的博文
以下全文引用 原博文链接
众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。
操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相同。在VC下,连接器对控制台程序设置的入口函数是 mainCRTStartup,mainCRTStartup 再调用你自己编写的 main 函数;*对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup*,WinMainCRTStartup 调用你自己写的 WinMain 函数。
具体设置哪个入口点是由连接器的“/subsystem:”选项参数确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方式:“CONSOLE|WINDOWS|NATIVE|POSIX”如果这个选项参数的值为“WINDOWS”,则表示该应用程序运行时不需要控制台,有关连接器参数选项的详细说明请参考 MSDN 库。
下面我们将通过预编译指令来对编译器和连接器进行设置,从而达到我们的目的:例子代码运行后播放Windows系统启动声音三次,然后退出,运行后不会显示控制台窗口。
在 IDE 环境中新建一个空的控制台程序,将上述代码添加到工程中,编译运行。
弹个黑框框 , 挺尴尬的.况且有些代码想在偷偷的执行
这时候就需要一些小技巧了
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")//不显示窗口
本来想着记录这个操作大,发现了更好的博文
以下全文引用 原博文链接
众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。
操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相同。在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 环境中新建一个空的控制台程序,将上述代码添加到工程中,编译运行。
【注意】 /*** *mainCRTStartup(void) *wmainCRTStartup(void) *WinMainCRTStartup(void) *wWinMainCRTStartup(void) * *Purpose: *These routines do the C runtime initialization, call the appropriate *user entry function, and handle termination cleanup.For a managed *app, they then return the exit code back to the calling routine, which *is the managed startup code. For an unmanaged app,they call exit and *never return. * * Function: User entry called: * mainCRTStartup main * wmainCRTStartup wmain * WinMainCRTStartup WinMain * wWinMainCRTStartup wWinMain * * *******************************************************************************/
相关文章推荐
- C#控制台程序去掉类似DOS的窗口的显示
- 发布你的glut程序时,记得把控制台去掉哟
- windows控制台程序不出黑窗口
- 控制台程序求解有理式(带括号,适用于int类型)
- VC++ UDP网络控制台程序
- 序列化案例(控制台程序)
- 07-控制台程序实现关闭进程
- 例题:青歌赛打分程序。去掉两个最高分,去掉两个最低分,再算平均分。主要学习数组和冒泡排序,什么情况下要定义数组
- linux下如何让控制台程序后台运行
- Eclipse启动多个程序时,控制台也有多个
- 控制台下NMAKE编译WIN32/VC/MFC程序步骤
- VC中控制台程序和基于对话框的程序之间的区别
- 在Java程序中截获控制台输出【转载】
- WinForm程序启动控制台窗口Console
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码) (转载)
- Java程序调优---去掉 java 项目中 多余的jar包 方法
- 使用面向对象的编程思想写一个简单的控制台计算器程序,放松一下
- 题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行
- 在VC的控制台的程序中如何使用 cstring类
- 控制台程序 自动生成Google sitemaps地图文件