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 变量中。
相关推荐
众少成多积小致巨16 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
小码编匠16 小时前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫3 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech3 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf5 天前
C#摸鱼实录——IoC与DI案例详解
c#
clint4565 天前
C++进阶(1)——前景提要
c++
咕白m6255 天前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
夜悊5 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴5 天前
CMake 021: IF 条件判据详诠
c++·cmake
Artech5 天前
[MAF预定义的AIContextProvider-02]AgentSkillsProvider——将Agent Skills引入MAF
ai·c#·agent·agent skills·maf