MFC中获取程序自身的版本信息

收集整理自CSDN论坛。

首先、在Stdafx.h中引入链接库:

#pragma comment(lib,"Version.lib")

在对应的处理方法中如下:

char FileVerInfo[4096];

DWORD dwVerLen = 0;
CString strPath; //路径
GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
strPath.ReleaseBuffer();
int n_Len = GetFileVersionInfoSize(strPath, &dwVerLen);
if (0 != n_Len)
{
BOOL m_bFile = GetFileVersionInfo(strPath,NULL,n_Len,FileVerInfo);

UINT cbTranslate;
char SubBlock[4096];
UINT dwBytes;

struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;


struct version {
char * strProductName;
char * strProductVersion;
char * strLegalCopyright;
char * strCompanyName;
char * strSpecialBuild;
} ver;

VerQueryValue(FileVerInfo, 
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);

for( UINT i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
wsprintf( SubBlock, 
TEXT("\\StringFileInfo\\%04x%04x\\ProductName"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);
VerQueryValue(FileVerInfo, 
SubBlock, 
(void **)&ver.strProductName, 
&dwBytes); 
wsprintf( SubBlock, 
TEXT("\\StringFileInfo\\%04x%04x\\ProductVersion"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);


// Retrieve file description for language and code page "i". 
VerQueryValue(FileVerInfo, 
SubBlock, 
(void **)&ver.strProductVersion, 
&dwBytes); 
wsprintf( SubBlock, 
TEXT("\\StringFileInfo\\%04x%04x\\LegalCopyright"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);


// Retrieve file description for language and code page "i". 
VerQueryValue(FileVerInfo, 
SubBlock, 
(void **)&ver.strLegalCopyright, 
&dwBytes); 
wsprintf( SubBlock, 
TEXT("\\StringFileInfo\\%04x%04x\\CompanyName"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);

// Retrieve file description for language and code page "i". 
VerQueryValue(FileVerInfo, 
SubBlock, 
(void **)&ver.strCompanyName, 
&dwBytes); 
wsprintf( SubBlock, 
TEXT("\\StringFileInfo\\%04x%04x\\SpecialBuild"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);

// Retrieve file description for language and code page "i". 
VerQueryValue(FileVerInfo, 
SubBlock, 
(void **)&ver.strSpecialBuild, 
&dwBytes); 

((CStatic *)GetDlgItem(IDC_STATIC_ABOUT_COPYRIGHT))->SetWindowText(ver.strLegalCopyright);
CString strTemp;
CString strVersion;
strTemp = ver.strProductName;
strVersion += strTemp;
strTemp = ver.strProductVersion;
strVersion += " " + strTemp + "版本。";
((CStatic *)GetDlgItem(IDC_STATIC_ABOUT_VERSION))->SetWindowText(strVersion);
break;
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值