Advertisement
Guest User

Untitled

a guest
Sep 25th, 2015
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #ifdef _WIN32
  2. #include <windows.h>
  3. void getFileVersion(LPCTSTR szVersionFile)
  4. {
  5.     DWORD  verHandle = 0;
  6.     UINT   size      = 0;
  7.     LPBYTE lpBuffer  = NULL;
  8.     DWORD  verSize   = GetFileVersionInfoSize( szVersionFile, &verHandle);
  9.  
  10.     if (verSize != NULL)
  11.     {
  12.         LPSTR verData = new char[verSize];
  13.  
  14.         if (GetFileVersionInfo( szVersionFile, verHandle, verSize, verData))
  15.         {
  16.             if (VerQueryValue(verData,L"\\",(VOID FAR* FAR*)&lpBuffer,&size))
  17.             {
  18.                 if (size)
  19.                 {
  20.                     VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
  21.                     if (verInfo->dwSignature == 0xfeef04bd)
  22.                     {
  23.  
  24.                         // Doesn't matter if you are on 32 bit or 64 bit,
  25.                         // DWORD is always 32 bits, so first two revision numbers
  26.                         // come from dwFileVersionMS, last two come from dwFileVersionLS
  27.                         printf( "File Version: %d.%d.%d.%d\n",
  28.                         ( verInfo->dwFileVersionMS >> 16 ) & 0xffff,
  29.                         ( verInfo->dwFileVersionMS >>  0 ) & 0xffff,
  30.                         ( verInfo->dwFileVersionLS >> 16 ) & 0xffff,
  31.                         ( verInfo->dwFileVersionLS >>  0 ) & 0xffff
  32.                         );
  33.                     }
  34.                 }
  35.             }
  36.         }
  37.         delete[] verData;
  38.     }
  39. }
  40. #endif
  41.  
  42. // Example usage
  43. int main(int argc, char *argv[])
  44. {
  45.     getFileVersion(L"myprogram.exe");
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement