看流星社区

 找回密码
 注册账号
查看: 2274|回复: 0

在项目中显示版本号

[复制链接]

该用户从未签到

发表于 2017-6-3 14:26:42 | 显示全部楼层 |阅读模式
//获取版本号
#pragma comment(lib,"Version.lib")
BOOL GetFileVersion(TCHAR * pFileName,TCHAR * pVersion)
{
if(pFileName == NULL || pVersion == NULL)
  return FALSE;

DWORD dwVerSize;
DWORD dwHandle;
LPVOID pVerBuffer = NULL;

dwVerSize = GetFileVersionInfoSize(pFileName, &dwHandle);
if (dwVerSize == 0)
  return FALSE;

pVerBuffer = new BYTE[dwVerSize+1];

if (GetFileVersionInfo(pFileName, 0, dwVerSize, pVerBuffer))
{
  VS_FIXEDFILEINFO * pInfo = NULL;
  unsigned int nInfoLen;

  unsigned int cbTranslate = 0;
  struct LANGANDCODEPAGE {
   WORD wLanguage;
   WORD wCodePage;
  } *lpTranslate;
  TCHAR szVersionTmp[128] = {0};
  BOOL bVerQuery = VerQueryValue(pVerBuffer, TEXT("\\VarFileInfo\\Translation"),(LPVOID*)&lpTranslate,&cbTranslate);
  // Read the file description for each language and code page.
  for( int i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
  {
   char SubBlock[200];
   wsprintf(SubBlock,
    TEXT("\\StringFileInfo\\%04x%04x\\FileVersion"),
    lpTranslate[i].wLanguage,
    lpTranslate[i].wCodePage);
   void *lpBuffer=NULL;
   unsigned int dwBytes=0;
   bVerQuery = VerQueryValue(pVerBuffer,
    SubBlock,
    &amp;lpBuffer,
    &amp;dwBytes);
   CString strTemp=(char *)lpBuffer;
   strcat(szVersionTmp,strTemp);
  }
  if(bVerQuery)
  {
   strcpy(pVersion,szVersionTmp);

   if(pVerBuffer != NULL)
   {
    delete []pVerBuffer;
   }
   return TRUE;
  }
}

if(pVerBuffer != NULL)
{
  delete []pVerBuffer;
}
return FALSE;
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 17:26

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表