VC中如何编译无Console窗口的Console程序

如何隐藏win32 控制台程序的console窗口 <br />如下设置 <br />#pragma   comment(   linker,   "/subsystem:/ "windows/ "   /entry:/ "mainCRTStartup/ " "   )   //   设置入口地址   <br />这样就ok了<br /><br />大家都知道,当编写一个win32   console   application时,当运行此类程序的时候 <br />默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 <br /> 阅读详情

 

 评论:


 

Kelvin_UV:为什么不直接用Win32 Application呢, 既然控制台程序不要命令行窗口, 又为什么用控制台程序呢?
(发表于2004-9-11 21:28:00)

hangwire:有时需要用控制台程序做一些没有用户交互的后台批量处理,不想显示命令行窗口。
(发表于2004-9-11 22:35:00)

Kelvin_UV:不明白!, 这样做不是更简单吗?

#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib") 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    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;
}

(发表于2004-9-11 23:23:00)

hangwire:请问这样做,连接器如何设置?按照缺省设置link通不过。
(发表于2004-9-11 23:53:00)

meteor135:为了不显示Console Window,必须使用/subsystem: windows Linker Option,
  但是一旦使用了它,
  如果不指定/entry:<function> Linker Option,Linker将查找WinMain作为entry point.
  此时只要为程序提供WinMain入口函数即可。
  如果不用WinMain而用main,就必须为Linker指定/entry:mainCRTStartup

  由此可见,具体方案有两个:
  
  方案1:

#pragma comment( linker, "/subsystem:windows" )
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR     lpCmdLine,
int       nCmdShow)
{
}

  方案2:

#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
int main(void)
{
}


(发表于2004-9-13 13:39:00)

meteor135:综合方案(没多少实用价值):

    #define ENTRY_SCHEME 1 //控制使用何种方案的宏常量

    #if ENTRY_SCHEME==1
    #pragma message("------------main---------------")
    #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
    int main( void )
    #else 
    #pragma message("-----------WinMain-------------" )
    #pragma comment( linker, "/subsystem:windows" )
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    #endif 
    {
    }

(发表于2004-9-13 13:41:00)

s000792003:我有方法可以将一个原有的 DOS 程序变为看不见
先用 16 位编辑工具开了那个执行档
在位置 0x130~0x13f (通常是 0x13c 或 0x134) 的位置之间找个数值 03,将它变为02
原来就是这么简单喔 !!
(发表于2004-9-13 16:55:00)

meteor135:楼上的方法果然没错,我把一个没有DOS窗口的程序,比如MFC编写的窗口程序用UltraEdit打开,然后把0x133~0x134的02改成03,然后保存,重新打开这个程序居然出现了黑窗口!为什么这个秘密之前没有人公开过呢?
(发表于2004-9-13 17:33:00)

meteor135:上面我的说法有点错误,在MFC程序中,应该是0x144。
(发表于2004-9-13 17:35:00)

GXHETAO:同意 Kelvin_UV 的話, 何必搞這麼麻煩, 如果只是為了說明你有多麼強, 我... ... ...
(发表于2004-9-15 12:27:00)

wetwoo:你的那个程序根本就不是CUI程序,本质上就是GUI程序。
GUI应用程序的进入点是:WinMain/wWinMain,嵌入到可执行文件的启动函数是WinMainCRTStartup/wWinMainCRTStartup。
CUI应用程序的进入点是:main/wmain,嵌入到可执行文件的启动函数是mainCRTStartup/wmainCRTStartup。
(发表于2007-4-2 10:13:00)

..........................................................................

登陆后可以发表评论

  
vc编译报错 unresolved external symbol __imp__PlaySoundA@12 解决办法 vc编译报错 unresolved external symbol __imp__PlaySoundA@12 解决办法 添加Winmm.lib和 头文件中包含 Mmsystem.h选择"project"->"setting"->"link"->"Object/library 阅读详情

相关推荐

【HDR】曝光融合(Exposure Fusion)

在曝光融合(Exposure Fusion)算法问世之前,多曝光序列合成用于显示的HDR需要两个步骤,第一步是将多张不同曝光的低动态范围图像合成为HDR(例如Debevec提出的加权融合方法),通常HDR为12bit或者16bit;第二步是通过tonemapping对高动态范围HDR进行压缩以支持低动态范围显示设备(例如Durand提出的基于双边滤波的tonemapping算法),一般会压缩至8bit。

专注人工智能,主攻CV 1万+

1、CMake如何添加编译选项(debug和release分别选择对应的库)?2、cmake 区分微软MSVC和mingw编译器3、qt中隐藏控制台cmd

【代码】CMake如何添加编译选项(debug和release分别选择对应的库)?

weixin_44733606的博客 1028

调用D3D11硬解码和渲染VideoProcessor版本

在https://blog.youkuaiyun.com/robothn/article/details/78781321一文中使用shader来显示FFMPEG硬解码后的YUV420P,本文调用D3D11的videoprocessor来进行图像空间变换和尺寸变换,取得了较好的效果。 1.初始化D3D11设备、videodevice等数据结构 FFMPEG调用D3D11硬解码,获取其对应的device,videodevice。。。 FFMPEG使用av_hwdevice_find_type_by_name调用D3d11

zlyadvocate的博客 9285

关闭 MFC 界面程序控制台输出窗口

MFC 程序工程设置,,控制台打印窗口设置

weixin_44075027的博客 681

基于live555实现一个rtsp客户端程序

本文介绍了基于live555流媒体库实现的RTSP客户端程序,能够通过RTSP地址获取H.264/H.265裸码流或TS流数据并存入本地文件。详细阐述了使用CLion搭建工程的代码架构和CMake配置,重点分析了TS流解析模块的实现,包括TS包结构解析、PES包提取和ES裸流获取的完整流程。文章提供了TS/PES/ES三种数据包的协议说明,并给出了从TS流中提取视频帧的具体方法,最后附有工程代码下载链接。该方案实现了RTSP流媒体接收、解析和存储的完整功能链。

kk821521286的博客 789

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

1589

IDEA System.console()方法找不到或无法加载主类的问题

解决调用System.console()方法返回的是null和找不到或无法加载主类的问题

weixin_50962309的博客 596

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3907

VS2019创建MFC窗口程序及用cl.exe和link.exe编译链接Windows API程序和MFC程序

目录一、创建MFC窗口程序二、命令行工具cl.exe、linker.exe1、环境配置2、cl.exe,linker.exe编译链接MFC窗口程序3、cl.exe,linker.exe编译链接Windows API程序三、参考资料 一、创建MFC窗口程序 1、1 打开VS2019,创建新项目。这里我们先搜索MFC,找到后双击进入创建 双击后进入,这个界面,完成项目名称和储存位置后,点击创建 然后在这个界面,根据自己的项目需求,进行程序的设置更改,然后点击完成即可完成创建。 1.2 这里说一个小插

qq_45748462的博客 1828

【NVIDIA】Jetson Orin Nano系列:编译外部驱动(交叉编译和板上编译)

Orin Nano外部驱动的开发入门,以hello world为例。使用交叉编译和板上编译两种方法

郭老二 1734

SAP Joule for Consultants 与 Joule for Developers 全面解读

SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 542

解决调用System.console()方法返回的是null和找不到或无法加载主类的问题

在学习《Java核心技术》一书过程中,碰到了使用控制台Console读取密码的问题。但是在IDEA中编程运行的时候,却返回的是空值问题。代码如下: package com.achao.InputTest; import java.io.Console; import java.util.Scanner; public class InputTest { public static v...

阿超的博客 3037

把数字化转型真正落到组织里:读懂 SAP 的 OCM 六维框架

摘要: SAP的变革管理框架(OCM)强调数字化转型不仅是技术任务,更需关注组织与人的适应性。OCM包含六大维度:变革战略(明确方向与风险)、变革领导力(统一关键管理者行动)、变革沟通(分层传递信息)、变革实现(细化岗位级影响)、变革赋能(按角色设计培训)和变革有效性(持续评估)。该框架贯穿项目全周期,尤其在云项目中,需从早期规划变革策略,避免后期高代价调整。OCM的核心是将系统设计转化为组织语言,确保业务真正采纳新方式运作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1433

VC6中编译、运行程序选项

在VC中编译、运行程序的小知识点 1、Run-Time Library Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。 我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI...

weixin_34074740的博客 281

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

[转]在VC中编译、运行程序的小知识点

在VC中编译、运行程序的小知识点 1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C R

jx_kingwei的专栏 1149

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在VC中编译、运行程序的小知识点

在VC中编译、运行程序的小知识点1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有

CryButNoTear的专栏 1182

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

在VC中编译、运行程序的小知识点(zt自http://huqingyu.cnblogs.com的blog)

在VC中编译、运行程序的小知识点1、Run-Time Library Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。 我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C

yztgx的专栏 1704

在VC中编译、运行程序的小知识点(zz)

在VC中编译、运行程序的小知识点 1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C R

502

VC下的stl库

在VC中编译、运行程序的小知识点 1、Run-Time Library   Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。   我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目

锄禾日当午 1400

如何让console程序以全屏窗口运行

有看到人问vc6,0编译生成的exe文件怎么样能让他全屏运行.

ClientsHome 2938

C语言窗口不见了,console程序 不显示console窗口方法(c语言)

#pragma comment( linker, "/subsystem:\ "windows\ " /entry:\"mainCRTStartup\ " " ) // 设置入口地址这样就ok了在控制台程序中隐藏控制台窗口!大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序...

weixin_39888080的博客 2554

让VC编译出来的程序不显示CMD黑色窗口

让VC编译出来的程序不显示CMD黑色窗口   让VC编译出来的程序不显示CMD黑色窗口,只要在代码最前面加入下面这句: #pragma comment(linker,"/subsystem:windows")       #ifdef NDEBUG #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainC

jackywu1010的专栏 3425

隐藏win32控制台程序的窗口

有时侯写一个控制台程序,不需要在前台出现类似DOS窗口的console窗口,这就要隐藏它;隐藏它很简单,只需在程序前面加上 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 就可以了。 此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linke

LANSHUIHAIYU的专栏 4640

VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)

VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序) Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。 VC6.0 确实有点老了,如果不是学校要求或者项目需要,建议使用 Visual Studio 代替,这里之所以讲解 VC6.0,是为了照

ccc369639963的博客 3万+

VC Console(控制台)程序如何隐藏CMD窗口

http://blog.youkuaiyun.com/fysy0000/article/details/6595416  #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #include #include #include #include #pragma comment( li

swazer_z 4534
上一篇: 递归得到目录中的所有文件
下一篇: float和double类型的内存分布和比较方法
fibbery
博客等级 码龄25年 304粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值