从rc文件访问字符串
2024-08-28 01:08:48
有.rc
文件,其中包含用于exe文件详细信息的版本,说明等。
如何获得在代码内使用的值?例如,要获取ProductName。
IDI_ICON1 ICON DISCARDABLE "abc-logo.ico" #if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif VS_VERSION_INFO VERSIONINFO
FILEVERSION , , ,
PRODUCTVERSION , , ,
FILEFLAGSMASK 0x3fL
FILEFLAGS
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN BEGIN
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0404,
END
BLOCK "StringFileInfo"
BEGIN
BLOCK "040404b0"
BEGIN
VALUE "CompanyName", "Company A\0"
VALUE "FileDescription", "Software A\0"
VALUE "FileVersion", "1.0.0.0\0"
VALUE "InternalName", "SoftwareX\0"
VALUE "LegalCopyright", "Copyright (C) Software Inc. All Rights Reserved\0"
VALUE "OriginalFilename", "SoftwareA.exe\0"
VALUE "ProductName", "Software A\0"
VALUE "ProductVersion", "1.1.0.0\0"
END
END
END
需要使用GetFileVersionInfo()
和VerQueryValue()
函数
例如:
TCHAR FileName[MAX_PATH];
GetModuleFileName(NULL, FileName, MAX_PATH); DWORD Handle;
DWORD Size = GetFileVersionInfoSize(FileName, &Handle); std::vector<BYTE> Data(Size);
GetFileVersionInfo(FileName, Handle, Size, Data.data()); LPTSTR ProductName;
UINT Len;
VerQueryValue(Data.data(), TEXT("\\StringFileInfo\\040404b0\\ProductName"), (LPVOID*) &ProductName, &Len); // use ProductName up to Len chars as needed... LPTSTR LegalCopyright;
VerQueryValue(Data.data(), TEXT("\\StringFileInfo\\040404b0\\LegalCopyright"), (LPVOID*) &LegalCopyright, &Len); // use LegalCopyright up to Len chars as needed...
最新文章
- OpenCascade Eigenvalues and Eigenvectors of Square Matrix
- [Java面试十一]数据库总结.
- 泌尿系统 Excretory system
- Base Pattern基本模式_Gateway入口
- C#中equals方法和==的区别
- poj2531
- 读excel时候出现java内存溢出
- 18.25 JLink调试程序步骤
- 记一次bond引起的网络故障
- ffmpeg源码安装
- Java实现月份递减
- 2.SlidingMenu(侧边栏效果)
- ubuntu之redis集群配置
- CSS单位分析
- ECMAScript 5和ECMAScript6的新特性以及浏览器支持情况
- .net下 本地锁、redis分布式锁、zk分布式锁的实现
- Ubuntu 64编译32位程序
- oracle所有的乱码解决方案
- 《时间序列分析及应用:R语言》读书笔记--第二章 基本概念
- JS数组去重的十种方法(转载)