显示/去掉CONSOLE窗口

众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟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 环境中新建一个空的控制台程序,将上述代码添加到工程中,编译运行。

时间: 2024-10-29 10:45:57

显示/去掉CONSOLE窗口的相关文章

去掉 CONSOLE 窗口(转)

建立一个win32 console application的话,linker的/subsystem选项应该为CONSOLE,可以在VC开发环境的project->setting->link->project option中看到! 接下来我们再看看应用程序是如何运行的!我们知道用VC编写的程序,运行的时候是需要 C\C++运行库支持的.当我们运行一个C/C++程序的时候链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式/sub

使用【 ajax 】【 bootstrap 】显示出小窗口 详情内容 一些代码意思可以参考下一个文章

使用[ bootstrap ]显示出小窗口  详情内容 显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &

将图片显示在指定窗口-OpenCV应用系列教程一

1.OpenCV模块划分 OpenCV其实就是一堆用C和C++语言来实现计算机视觉算法的源代码文件:例如C接口函数cvCany()实现了Canny边缘提取算法,我们可以直接将这些源代码添加到自己的软件项目中,而不需要自己去写代码实现Canny算法.同时由于源文件居多,所以根据算法的功能将源文件分到多个模块中(如下),将每个模块中的源文件编译成一个库文件(如opencv_core.lib.opencv_highgui.lib),用户调用时仅将所需的库文件添加到自己的项目中,与自己的源文件一起连接成

iOS 8:【转】最大化 Xcode Debug Console 窗口

源地址:http://fann.im/blog/2012/03/23/maximize-xcode-debug-console-window/ 参考 How to get back the Console window in XCode4 做了一点点改动,Run 的时候自动切换到 Console Tab 并且是最大化展示,效果还不错. 打开 Tab 支持,View - Show Tab Bar. 双击或点 + 添加一个 Tab. 双击新加的 Tab 改名,比如 CONSOLE. 激活 Conso

system调用命令行命令而不显示命令行窗口

system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 1 #pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" ) // 设置入口地址 2 #include <windows.h> 3 #include <stdio.h>

SWT中子窗口始终显示在主窗口上面的方法

只需要在创建子窗口的时候,设置一下其属性就可以了,所设置的属性为:SWT.ON_TOP.例如: PopUpChartWin win = new PopUpChartWin(display, SWT.SHELL_TRIM | SWT.ON_TOP); 就这样了.另外附窗口设置的属性参数一览表(别处拷贝粘贴来的). BORDER--当只有BORDER的时候,窗口是一个只有细细白色边框的空白窗口,没有title那一圈蓝色的边框,也没有最大化,最小化,关闭.不能resize,不能移动.在任务栏里右键没有

隐藏 console 窗口

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"" )  //   设置入口地址 在默认情况下链接器看到/subsystem下是windows选项的时候,它会自动寻找WinMain或者wWinMain         但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!         上面是在代码中使用#pragma指令

trim问题和显示多个窗口问题

今天在学习JS的过程中遇到了两个问题: 第一:在eclipse的内置浏览器中alert窗口跳不出来,无显示,而在外置浏览器中就可以正常显示,结果其原因是:eclipse的内置浏览器不支持trim(),把trim删掉即可. 有trim的代码:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE

Jquery:如何让子窗口的div显示在父窗口之上

<1> js或者jQuery访问页面中的框架iframe. 注意:框架内的页面是不能跨域的! 假设有两个页面,在相同域下. 假设:父窗口  index.html ,有id 为 subifrm 的iframe 1. 在index.html执行JS直接访问子窗口中某元素: document.getElementById('subifrm').contentWindow.document.getElementById('test').style.color='red' 2. 利用jquery 来访问