VC读取文件的文件版本号

VC中获取软件自身的版本号 <br />//获取软件当前的版本<br />//该版本号是在资源文件中的../Version/VS_VERSION_INFO/FILEVERSION的值<br />CString CMFCVLCDlg::GetFileVer()<br />{<br /> char cPath[200],szVersionBuffer[200];<br /> DWORD dwHandle,InfoSize;<br /> CString strVersion;<br /> ::GetModuleFileName(NULL,c 阅读详情

#include<windows.h>

#include<winver.h>

///引入Version.lib库

QString InfomationCollect::GetFileVertion( QString fullName )
{
DWORD dwLen = 0;
char* lpData=NULL;
BOOL bSuccess = FALSE;
QString fileInfomation;
//获得文件基础信息
//--------------------------------------------------------
dwLen = GetFileVersionInfoSize(fullName.toStdWString().c_str(), 0);
if (0 == dwLen)
{
//qDebug()<<"Get file verstion error! ";
return "";
}
lpData =new char [dwLen+1];

bSuccess = GetFileVersionInfo(fullName.toStdWString().c_str(), 0, dwLen, lpData);
if (!bSuccess)
{
//qDebug()<<"Get file verstion error! ";
delete lpData;
return "";
}

LPVOID lpBuffer = NULL;
UINT uLen = 0;

//获得语言和代码页(language and code page)
//---------------------------------------------------
bSuccess = VerQueryValue(lpData,
(TEXT("\\VarFileInfo\\Translation")),
&lpBuffer,
&uLen);
QString strTranslation,str1,str2;
unsigned short int *p =(unsigned short int *)lpBuffer;
str1.setNum(*p,16);
str1="000" + str1;
strTranslation+= str1.mid(str1.size()-4,4);
str2.setNum(*(++p),16);
str2="000" + str2;
strTranslation+= str2.mid(str2.size()-4,4);
//获得文件版本信息
//-----------------------------------------------------
QString code = "\\StringFileInfo\\"+strTranslation +"\\FileVersion";
bSuccess = VerQueryValue(lpData,
(code.toStdWString().c_str()),
&lpBuffer,
&uLen);
if (!bSuccess)
{
//qDebug()<<"Get file verstion error! ";
delete lpData;
return "";
}
fileInfomation += QString::fromUtf16((const unsigned short int *)lpBuffer);
//获得文件的描述
//---------------------------------------------------------
/*code = "\\StringFileInfo\\"+ strTranslation +"\\FileDescription";
bSuccess = VerQueryValue(lpData,
(code.toStdWString().c_str()),
&lpBuffer,
&uLen);
if (!bSuccess)
{
qDebug()<<"Get file verstion error! ";
delete lpData;
return "";
}
fileInfomation +="^";
fileInfomation += QString::fromUtf16((const unsigned short int *)lpBuffer);*/
delete [] lpData;//此处不需要释放
return fileInfomation;
}

//==================================================

//VC版本

char* szFileName = “C://EnochShen.exe”;
DWORD dwSize = GetFileVersionInfoSize(szFileName,NULL);
LPVOID pBlock = malloc(dwSize);
GetFileVersionInfo(szFileName,0,dwSize,pBlock);

char* pVerValue = NULL;
UINT nSize = 0;
VerQueryValue(pBlock,TEXT(“//VarFileInfo//Translation”),
(LPVOID*)&pVerValue,&nSize);

CString strSubBlock,strTranslation,strTemp;
strTemp.Format(“000%x”,*((unsigned short int *)pVerValue));
strTranslation = strTemp.Right(4);
strTemp.Format(“000%x”,*((unsigned short int *)&pVerValue[2]));
strTranslation += strTemp.Right(4);
//080404b0为中文,040904E4为英文

//文件描述
strSubBlock.Format(“//StringFileInfo//%s//FileDescription”,strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format(“文件描述: %s”,pVerValue);
AfxMessageBox(strTemp);

//内部名称
strSubBlock.Format(“//StringFileInfo//%s//InternalName”,strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format(“文件描述: %s”,pVerValue);
AfxMessageBox(strTemp);

//合法版权
strSubBlock.Format(“//StringFileInfo//%s//LegalTradeMarks”,strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format(“合法版权: %s”,pVerValue);
AfxMessageBox(strTemp);

//原始文件名
strSubBlock.Format(“//StringFileInfo//%s//OriginalFileName”,strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format(“原始文件名: %s”,pVerValue);
AfxMessageBox(strTemp);

//产品名称
strSubBlock.Format(“//StringFileInfo//%s//ProductName”,strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format(“产品名称: %s”,pVerValue);
AfxMessageBox(strTemp);

//产品版本
strSubBlock.Format(“//StringFileInfo//%s//ProductVersion”,strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format(“产品版本: %s”,pVerValue);
AfxMessageBox(strTemp);

free(pBlock);

VC6.0读取Excel文件数据 VC6.0读取Excel文件数据 文件存储在Excel文件中,因此第一步是能够在程序中方便地读取表格数据,这里用的是VC6.0 MFC。文章内容仅供参考,程序不完整。 完整的VC6.0相关程序,需要的可以下载:https://download.youkuaiyun.com/download/qq_31569581/10714285 1、电脑上安装VC6.0,Excel2007,其他Office版本亦可... 阅读详情

相关推荐

VC 6.0中读取XML文件

搞了一天 总算在VC 6.0中可以读取XML文件, 哎呀就是麻烦啊  我的天   搞了一整天头都大了在百度上参考了 许多VC代码 但是不管我怎么调试都没成功 比如哦 http://hi.baidu.com/walfer/blog/item/0a548a44a113e24c500ffe37.html    就是编译不过去(自己做了修改,因为自己机子上没有atlstr.h头文件,而且也不想在此控制

雪之梦的专栏 5363

获取软件版本信息

1.先在工程中添加Version资源2.要在vs工程属性添加Version.lib到linker input选项中。3.GetModuleFileName获取当前执行的模块的fullPath.4.GetFileVersionInfoSize获取版本信息文件的大小5.GetFileVersionInfo获取版本信息,并把它放在buffer中。6.VerQueryValue从buf

向往大海专栏 1634

vc读取文件,修改写入,保存文件

需要修改点云文件内容,必须用vc去

漫先绅的专栏 1035

获取RC中的ProductName和RC中的ProductVersion

CString GetProductName() {  DWORD   dwSize,dwHandle;    BYTE   *byData, *lpName;      char   sAppName[MAX_PATH];    CString   strName;    unsigned   int   uLen;    //获得版本号    sprintf(sAp

dengziliang001的专栏 3504

C++获取程序版本信息

通过代码获得程序资源中VS_VERSION_INFO所有信息。

libversion:高级版本字符串比较库

自由版本 高级版本字符串比较库。 需要比较软件,软件包或任何版本? 比较1.0和1.1可能很容易,但是您准备好处理1.2-x.3~alpha4类的更复杂的情况了吗? libversion是通过使用项目中的库来证明的,该库依赖于比较软件版本字符串,即使它们以不同的格式编写也是如此。 特征 以下是libversion为您提供的版本功能的简短列表: 简单版本,显然: 0.9 < 1.0 < 1.1 忽略不重要的部分: 1.0 == 1.0.0 前导零: 1.001 == 1.1 异常分隔符: 1_2~3 == 1.2.3 字母后缀: 1.2 < 1.2a < 1.2b < 1.3 字母数字预发行组件: 1.0alpha1 == 1.0.alpha1 == 1.0a1 == 1.0.a1 1.0alpha1 < 1.0alpha2 < 1.0beta1 < 1.0rc1 < 1

VC6获取硬盘序列号、型号、修订版本号

因为要做个读取硬盘参数信息的控件,所以在网上找了不少代码,但是自己作为一个初学者在使用别人代码时,总会发现有各种各样的问题: 1. 需要的头文件未写明 2. 有些定义未给出 3. 代码的开发环境未明,导致编译时出现“XXXX“未定义 3. 添加的代码写在哪里不明确 以上这些情况对于初学者是很容易遇到的,所以这里整理了下。 以下是“读取硬盘序列号、型号、修订版本号”的完整代码(win32

JoeBlackZQQ的专栏 7611

VC获得EXE可执行文件的版本信息

本VC源码可查询任何可执行文件的版本信息,轻松获取文件版本信息,并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。源码包中是完整例子。 运行环境:Windows/Visual C/C++

vc mfc代码中获得程序资源中版本信息的方法

http://www.7es.cn/Software_development/124.shtmlvc mfc代码中获得程序资源中版本信息的方法vc资源编辑可以对应用程序的版本信息进行设定,编译好的执行文件可以在文件属性中看到文件版本、程序版本等版本信息。一般用户是不太主意文件属性终端的版本信息的,那么如果能让版本信息显示到界面上就直观多了,并且可以统一管理版本信息而不用每次编辑界面。折腾了一番,写了如下函数,可以获取并返回资源文件中设定的版本号字符串。CString GetAppVersion()   { 

carl2380的专栏 2353

从可执行文件中读取版本信息VC源代码

从可执行文件中读取版本信息源代码:VersionInfo_demo可以读取版本号、产品版本、文件版本、公司、版权信息等。 关键字:VersionInfo,版本信息,

从量子兔AlphaPi硬件拆解到ESP32-C3库开发实战

本文详细拆解了量子兔AlphaPi开发板的硬件构成,重点分析了其核心ESP32-C3芯片及外围传感器。通过逆向工程揭示了GPIO引脚定义与通信协议,并实战演示了如何从零开发MicroPython库,驱动按键、加速度计及LED点阵,最终整合成一个互动平衡球游戏项目,展现了开源硬件在教育与二次开发中的潜力。

weixin_29164497的博客 458

c语言读取 mat文件的函数,vc对.mat文件的读取

1、选VC的菜单Tools->Options,在弹出对话框中点选Directories标签,在右方的下拉菜单中选择Include files,然后在下方列表中添加($MATLAB$)externinclude;再在右方的下拉菜单中选择Library files,然后在下方列表中添加($MATLAB$)externlibwin32microsoftmsvc60。注:上面的($MATLAB$)以...

weixin_39603327的博客 1313

基于YOLOv8和PaddlepaddleOCR的微信截图聊天记录提取

本文提出了一种基于YOLOv8和PaddleOCR的微信聊天记录提取方法。首先使用YOLOv8n模型分割出聊天气泡(针对深浅色模式分别训练),通过合成数据集增强模型鲁棒性,召回率达0.995。随后采用PP-OCRv5进行文本识别,利用坐标匹配将气泡内文本送入识别队列,短长文本平均置信度分别>0.98和>0.95。文中特别强调了PaddleOCR不同版本的输出格式差异及适配方案,建议使用3.0+版本。该方法有效解决了直接OCR识别易受干扰的问题,通过气泡分割+文本定位的两阶段策略显著提升了识别准确

2401_87383958的博客 2353

VC读取音频文件

vc 读取音频文件

Free Mind GARDEN 2万+

7系列ZYNQ硬件调试:Vitis无法识别ARM DAP的排查与解决

本文详细分析了Xilinx 7系列ZYNQ芯片在Vitis开发环境中无法识别ARM DAP的常见问题及解决方案。从硬件设计检查(电源系统、时钟电路)、JTAG连接诊断到软件环境排查,提供了全面的调试指南。特别针对ARM DAP初始化失败的情况,给出了实用的排查步骤和预防措施,帮助开发者快速定位和解决类似问题。

weixin_33737134的博客 513

视图库对接系列(GA-T 1400)四、视图库对接系列(本级)注册

在之前的步骤中,我们已经把项目大体的架构已经写出来了。那我们就来实现注册接口。GA-T 1400中的步骤如下:这里的话,我们实现的简单点, 我们不进去鉴权,也就是设备或平台找我们注册的话,我们直接返回成功,不进行验证。如果需要鉴权的话可看我的另外一篇文档。

qq_37716298的博客 1043

VC对大型数据文件的读取&读取二进制文件

笔者前不久曾遇到一个问题,解决之后的经验愿与大家分享。问题是这样的,有一批数据文件,数据格式如下: 日期,开盘,最高,最低,收盘,成交量,成交金额  1996年5月13日,636.96,636.96,636.96,636.96,0,0, 1996年5月14日,641.61,641.61,641.61,641.61,0,0, 1996年5月15日,637.83,637.83,637.83,6

Chinawash 专栏 5928

YOLOv11的扩散模型去噪预处理-(在推理前对低质量图像进行增强)

摘要: 扩散模型与YOLOv11的结合有效提升了复杂场景下的目标检测性能。针对低质量图像(如噪声、低光照)导致YOLOv11特征提取退化的问题,研究提出了一种基于条件扩散模型的预处理方法。通过语义引导的渐进式去噪,在保留关键检测特征的同时,显著改善了图像质量。技术核心包括:1)利用YOLOv11浅层特征作为条件输入;2)交叉注意力机制实现任务感知去噪;3)知识蒸馏与潜空间扩散加速推理。实验表明,该方法使mAP50提升19%,在15步内达到传统百步去噪效果,平衡了精度与实时性需求,为鲁棒性目标检测提供了新思路

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 875

VC中怎么读取文件

一、   CStdioFile 二、   FILE* f = fopen("file name", "mode");   char buff[size];   fread(buff, size, 1, f);...

BlueMan 3799

ABAP CDS 货币与计量单位换算全攻略:CURRENCY_CONVERSION、UNIT_CONVERSION 与 DECIMAL_SHIFT 的工程化实践

本文介绍了SAP ABAP CDS中三种单位/货币换算函数(UNIT_CONVERSION、CURRENCY_CONVERSION、DECIMAL_SHIFT)的实战应用。重点包括:各函数的职责边界与适用场景,参数配置与精度控制策略,以及基于标准表(T006、TCUR*等)的换算规则来源。文章提供可运行的CDS示例,涵盖单位换算(如MI转KM)、货币汇率转换(含小数位处理)及纯小数位调整等典型场景,并强调生产环境中需注意的精度差异与审计风险控制。适用于企业报表、成本核算等需要统一口径的业务场景。

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

华为OD机试真题 新系统 2026-08-16 Python&JS【智能家居模式调度优化】

智能家居系统中有多个自动化联动模式,每个模式 modes[i]=[start_time,end_time,power],表示它在左闭右开区间 [start_time,end_time) 内持续消耗固定功率 power。

MISAYAONE的博客 84

vc对.mat文件的读取

1、选VC的菜单Tools->Options,在弹出对话框中点选Directories标签,在右方的下拉菜单中选择Include files,然后在下方列表中添加($MATLAB$)externinclude;再在右方的 下拉菜单中选择Library files,然后在下方列表中添加($MATLAB$)externlibwin32microsoftmsvc60。 注:上面的($MATLAB$)以计算机中MATLAB的安装位置替换;如果使用的VC版本是5.0,则把列表中添加路径中的msvc60替换成ms

吴亮与你共同进步 1903

华为OD机试真题2026双机位C卷 Python&JS 语言 实现【主次关联成环警告】

在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:

MISAYAONE的博客 269

vc读取文本文件

CString   csLine;     try     {           CStdioFile   file("c://autoexec.bat",CFile::modeRead);           while(file.ReadString(csLine))                 AfxMessageBox(csLine);     }     catch(...)  

Grubby的专栏 1万+

精雕软件(JDpaint) 5.5 绿色版

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 为Qtcreator 编译的程序添加管理员权限
下一篇: 获取文件数字签名证书信息
鱼公子哟西
博客等级 码龄14年 17粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值