wajdm2000 发表于 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;

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 = {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;
   wsprintf(SubBlock,
    TEXT("\\StringFileInfo\\%04x%04x\\FileVersion"),
    lpTranslate.wLanguage,
    lpTranslate.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;
}
页: [1]
查看完整版本: 在项目中显示版本号