获取版本信息

CString   GetProductVersion(LPCTSTR   lpszFileName = NULL)
{
 CString   strVersion;
 TCHAR   szSrcfn[MAX_PATH]; // 要获取信息的文件
 if(lpszFileName   ==   NULL)
  ::GetModuleFileName(NULL,   szSrcfn,   sizeof(szSrcfn));
 else
  lstrcpy(szSrcfn,   lpszFileName);
 DWORD dwLen = 0;
 char* lpData=NULL;
 BOOL bSuccess = FALSE;
 DWORD handle;

 dwLen = GetFileVersionInfoSize(szSrcfn, &handle);
 if (0 == dwLen)
 {
  delete lpData;
  return L"获得版本信息失败!";
 }

 lpData =new char [dwLen+1];

 bSuccess = GetFileVersionInfo(szSrcfn, 0, dwLen, lpData);
 if (!bSuccess)
 {
  delete lpData;
  return L"获得版本信息失败!";
 }

 LPVOID lpBuffer = NULL;
 UINT uLen = 0;
 
 struct   LANGANDCODEPAGE   {
  WORD   wLanguage;
  WORD   wCodePage;
 };
 
 LANGANDCODEPAGE Translate;
 LANGANDCODEPAGE* lpTranslate = &Translate;
 UINT   cbTranslate;
 VerQueryValue(   lpData,   TEXT("\\VarFileInfo\\Translation"),
  (LPVOID*)&lpTranslate,   &cbTranslate);
 
 TCHAR  szSubBlock[256];

 wnsprintf( (LPWSTR)szSubBlock, 256, _T("\\StringFileInfo\\%04x%04x\\ProductVersion"),
  lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage);
 
 bSuccess = VerQueryValue(lpData, szSubBlock, &lpBuffer,&uLen);

 if (!bSuccess)
 {
  delete lpData;
  return L"获得版本信息失败!";
 }

 strVersion.Format(L"%s", (char*)lpBuffer);
 strVersion.Replace(L",", L".");

 delete [] lpData;
 return strVersion;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值