MFC 获取程序版本信息

在 MFC 应用程序中,可以使用 GetFileVersionInfo 函数来获取程序版本信息。这个函数能够获取一个指定文件的版本信息,并将其存储在一个缓冲区中。然后,可以使用 VerQueryValue 函数来解析版本信息并提取所需的信息。

javascript 复制代码
#include <afxver_.h>
#pragma comment(lib,"version.lib")

void GetAppVersionInfo(CString& strVersion)
{
    // 获取模块文件名
    CString strModuleFileName;
    GetModuleFileName(AfxGetInstanceHandle(), strModuleFileName.GetBuffer(MAX_PATH), MAX_PATH);
    strModuleFileName.ReleaseBuffer();

    // 获取文件版本信息大小
    DWORD dwHandle;
    DWORD dwSize = GetFileVersionInfoSize(strModuleFileName, &dwHandle);
    if (dwSize == 0)
    {
        strVersion = _T("Failed to get version information");
        return;
    }

    // 分配内存存储文件版本信息
    LPBYTE lpData = new BYTE[dwSize];
    if (!GetFileVersionInfo(strModuleFileName, dwHandle, dwSize, lpData))
    {
        delete[] lpData;
        strVersion = _T("Failed to get version information");
        return;
    }

    // 解析文件版本信息
    VS_FIXEDFILEINFO* pFileInfo;
    UINT nFileInfoSize;
    if (VerQueryValue(lpData, _T("\\"), (LPVOID*)&pFileInfo, &nFileInfoSize))
    {
        DWORD dwFileVersionMS = pFileInfo->dwFileVersionMS;
        DWORD dwFileVersionLS = pFileInfo->dwFileVersionLS;

        WORD major = HIWORD(dwFileVersionMS);
        WORD minor = LOWORD(dwFileVersionMS);
        WORD build = HIWORD(dwFileVersionLS);
        WORD revision = LOWORD(dwFileVersionLS);

        // 构建版本字符串
        strVersion.Format(_T("%d.%d.%d.%d"), major, minor, build, revision);
    }
    else
    {
        strVersion = _T("Failed to get version information");
    }

    delete[] lpData;
}
调用 GetAppVersionInfo 函数,它将会返回一个 CString 类型的版本信息字符串。

调用

javascript 复制代码
CString strVersion;
GetAppVersionInfo(strVersion);
// 现在 strVersion 中包含了程序的版本信息
这段代码会获取当前应用程序的版本信息,并存储在 strVersion 变量中。
相关推荐
第七序章10 小时前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
逆小舟12 小时前
【Linux】人事档案——用户及组管理
linux·c++
风中的微尘16 小时前
39.网络流入门
开发语言·网络·c++·算法
未来之窗软件服务17 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
混分巨兽龙某某17 小时前
基于Qt Creator的Serial Port串口调试助手项目(代码开源)
c++·qt creator·串口助手·serial port
小冯记录编程17 小时前
C++指针陷阱:高效背后的致命危险
开发语言·c++·visual studio
1uther17 小时前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
C_Liu_18 小时前
C++:类和对象(下)
开发语言·c++
coderxiaohan18 小时前
【C++】类和对象1
java·开发语言·c++
阿昭L18 小时前
MFC仿真
c++·mfc