屏蔽控制台应用程序的窗口#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")

Visual Studio 2022 C++&QT项目属性页配置全解析:从编译链接到QT集成 在C++项目开发中,构建系统是连接源代码与可执行程序的核心枢纽,它通过编译器、链接器等工具链将高级语言转化为机器指令。其工作原理涉及预处理、编译、汇编、链接等多个阶段,每个阶段的配置都直接影响最终程序的性能、稳定性和可调试性。从技术价值看,一个设计良好的构建配置能确保环境一致性、构建可复现性,并有效管理多平台、多配置的复杂度,这对大型工程和团队协作至关重要。在应用场景上,无论是桌面应用、服务端程序还是嵌入式开发,构建配置都是项目工程化的基石。特别是在Visual Studio 2022的C++与QT集成开发 阅读详情

屏蔽控制台应用程序的窗口#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 环境中新建一个空的控制台程序,将上述代码添加到工程中,编译运行。
计划任务绕过360核晶自启动 c++ 绕过360核晶实现计划任务开机自启(带bypass uac) 阅读详情

相关推荐

ES快速入门,一篇就懂!

Elastic Search 入门前言什么是搜索为什么常用数据库不适合做搜索什么是Lucene什么是Elastic SearchES核心概念ES使用正常启动索引​增删改查ES增加常见问题:ES删除ES查询欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的

qq1592的博客 9310

C++ 控制台程序隐藏方法

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 在程序中加上如上语句,可以隐藏控制台窗口。 完整代码: #include<windows.h> #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址 int main() { MessageBox(NULL..

technologyleader的专栏 5161

通过TMS320F28335学习DSP的开发流程——28335的基础知识(1)

1、TMS320F28335内核的主要特点 ①F28335 DSP集成了DSP和微控制器的长处,如DSP的主要特征、单周期乘法运算,F28335能够在一个周期内完成32x32位的乘法累加运算,或者两个16x16位乘法累加运算,而同样32位的普通单片机则需要4个周期以上才能完成 ②快速的中断响应 ③可在任何内存位置进行单周期读、修改、写操作 ④可采用C/C++编程软件,效率非常高 2、处理器的主要资源 ①32位浮点DSP,主频是150MHz,方便电机控制、电力设备控制及工业控制等。 ②片上存储器:FLASH–

Kayboy的博客 2万+

VC控制台程序隐藏控制台

如果对于不需要复杂图形界面的控制台程序,

m0_60352504的博客 1722

从OSGB到3DTiles:倾斜摄影数据高效转换实战指南

本文提供了将倾斜摄影OSGB数据高效转换为Web友好的3DTiles格式的完整实战指南。详细介绍了使用开源工具进行转换的步骤,包括环境搭建、核心命令、参数调优及在Cesium中加载与问题排查,旨在帮助GIS开发者和三维应用工程师打通数据到Web展示的最后一公里,实现大规模三维模型的流畅网络发布。

u0v1w2x3的博客 570

ubuntu20.04开机黑屏卡在/dev/sda1:clean,***files,***blocks,解决心得记录

这个问题如果你百度,会发现目前有很多种解决方法。 有更新显卡驱动的,有卸载上一次安装软件的,还有各种奇奇怪怪的故障原因。 如果你是属于上述情况,那么按照百度和论坛的各种指引操作一般都能解决。 但我这里主要说一种特殊情况,就是我什么也没有操作,我什么也没干。就是正常使用系统关了机突然就报错了。 这也是自己亲自遇到的问题,做个小记录方便以后自己回顾。 上一次出现这种情况我重装系统了,这次用了两个月又出现了,重装成本太高,我接受不了,于是找到解决办法。 首先找个终端进入,进入终端的方法很多,用安装u盘

qq_41517017的博客 2万+

#pragma comment( linker, “/subsystem:\“windows\“ /entry:\“mainCRTStartup\““ ) 隐藏输出窗口 vsqt2022 cmake

vsqt2022 cmake输出窗口不见了

sunflower_2020的博客 560

【Unity游戏开发】SDK接入与集成——小白入门篇

一、简介   通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感,太尼玛无聊了(Android渠道一弄就十几个,直接吐血)。其实通常情况下接入SDK都是很简单的一个过程,本系列博客就让马三和大家从小白开始,从零基础开始学习如何接入SDK以及一些常见的SDK的...

weixin_34195142的博客 5763

屏蔽控制台应用程序的窗口#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")...

众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。   操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相 同。在VC下,连接器对控制台程序设...

diaoqu4574的博客 983

【AI智能体】Claude Code 核心记忆文件 CLAUDE.md实战操作详解

Claude Code 核心记忆文件 CLAUDE.md实战操作详解

congge 5457

Android Framework WMS全面概述和知识要点

WindowManagerService 类是整个 WMS 的核心大脑,处于系统服务层,负责协调和管理所有与窗口相关的操作。它在 Android 系统架构中起到承上启下的关键作用,向上对接应用层的窗口请求,向下与 SurfaceFlinger 等底层组件交互,确保窗口能够正确地在屏幕上显示和管理。

大模型大数据攻城狮的专栏 1793

屏蔽控制台应用程序的窗口 #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")

众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。   操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相 同。在VC下,连接器对控制台程序设置的入口函数

vsooda的专栏 1661

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

VS2008下利用#pragma comment屏蔽程序运行时产生的CMD窗口

有时我们的exe程序并不需要CMD窗口打印输出信息,所以我们需要屏蔽它。那么怎么屏蔽它呢? 在VS2008下利用预编译指令#pragma comment就可以屏蔽CMD窗口,下面是具体方法。

昊虹AI笔记 2706

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

看到同事写的程序,#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 所理解的

摘自:http://www.vckbase.com/bbs/prime/viewprime.asp?id=581, 如有侵权,请及时告知。 众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。   操作系统装载应用程序后,做完初始

darkbus111的专栏 6161

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

#pragma预处理命令

#pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma指令: #pragma comment(lib,"XXX.lib") 表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。 #pragma comment(linker,"/ENTRY:main_function") 表示指定链接器选项/ENTRY:main_function #pragma ...

weixin_34216107的博客 1998

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10下,Qt或c++程序编译出来的exe文件,独立点击打开时不弹出cmd命令行(黑框框)的方法

最近在写Qt,就是在打包发行时点击exe文件总是弹出一个命令行,经过大量的探索,发现有两种方法。 方法一:在main.cpp上添加一行预处理指令 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") 方法二:在编译命令上添加(在/link后): /subsystem:windows /entry:mainCRTStartup 希望对你用! ...

mabinnib的博客 3530

#pragma使用

尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字。合理地应用这些关键字,有时候能使我们的工作非常方便。下面随便说说 Visual C++ 中 #pragma 指示符的使用。 一、用#pragma导出DLL函数     传统的到出 DLL 函数的方法是使用模块定义文件 (.def),Visual C++ 提供了更简洁方便的方法,那就

开发者说 2805

pragma comment的使用(转)

#pragma 的使用 尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字。 合理地应用这些关键字,有时候能使我们的工作非常方便。下面随便说说 Visual C++ 中 #pragma 指示符的使用。 一、用#pragma导出DLL函数     传统的到出 DLL 函数的方法是使用模块定义文件 (.def),V

u012102997的专栏 949

#progma整理

 #pragma预处理指令详解 在所有的预处理指令中,#Pragma  指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。  其格式一般为:        #Pragma

Tommy(凌飞)的专栏 1098
上一篇: assert()函数用法总结
下一篇: c++中如何写参数不定的函数
sql112113
博客等级 码龄14年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值