在 MFC 应用程序中,可以使用 GetFileVersionInfo 函数来获取程序版本信息。这个函数能够获取一个指定文件的版本信息,并将其存储在一个缓冲区中。然后,可以使用 VerQueryValue 函数来解析版本信息并提取所需的信息。
#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 类型的版本信息字符串。
调用
CString strVersion;
GetAppVersionInfo(strVersion);
// 现在 strVersion 中包含了程序的版本信息
这段代码会获取当前应用程序的版本信息,并存储在 strVersion 变量中。