C++/(MFC)Get VS_VERSION_INFO

  1. CString GetFileVersion()
  2. {
  3.     CString strVersion = _T("");
  4.     HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION);
  5.     if (hRsrc != NULL)
  6.     {
  7.         HGLOBAL hGlobalMemory = LoadResource(NULL, hRsrc);
  8.         if (hGlobalMemory != NULL)
  9.         {
  10.             CString rVersion;
  11.             LPVOID pVersionResouece = LockResource(hGlobalMemory);
  12.             LPVOID pVersion = NULL;
  13.             DWORD uLength,langD;
  14.             BOOL retVal;
  15.             retVal = VerQueryValue(pVersionResouece, _T("\\VarFileInfo\\Translation"), (LPVOID*)&pVersion, (UINT*)&uLength);
  16.             if (retVal && uLength == 4) 
  17.             {
  18.                 memcpy(&langD,pVersion,4); 
  19.                 rVersion.Format(_T("\\StringFileInfo\\%02X%02X%02X%02X\\FileVersion"),
  20.                     (langD & 0xff00)>>8,langD & 0xff,(langD & 0xff000000)>>24, 
  21.                     (langD & 0xff0000)>>16);
  22.             }
  23.             else
  24.             {
  25.                 rVersion.Format(_T("\\StringFileInfo\\%04X04B0\\FileVersion"), GetUserDefaultLangID());
  26.             }
  27.             if( VerQueryValue(pVersionResouece, rVersion.GetBuffer(0), (LPVOID*)&pVersion, (UINT *)&uLength) != 0 )
  28.             {
  29.                 strVersion.Format(_T("%s"), pVersion);
  30.             }
  31.         }
  32.         FreeResource(hGlobalMemory);
  33.     }
  34.     return strVersion;
  35. }

Key             Value
FileVersion     1.1.3.7

이 글에는 0 개의 댓글이 있습니다.