Code: Select all
int GetFileVersion(const char *filename, char *ver)
{
DWORD dwHandle, sz = GetFileVersionInfoSizeA( filename, & dwHandle );
if ( 0 == sz )
{
return 1;
}
char *buf = new char[sz];
if ( !GetFileVersionInfoA( filename, dwHandle, sz, & buf[ 0 ] ) )
{
delete buf;
return 2;
}
VS_FIXEDFILEINFO * pvi;
sz = sizeof( VS_FIXEDFILEINFO );
if ( !VerQueryValueA( & buf[ 0 ], "\\", (LPVOID*)&pvi, (unsigned int*)&sz ) )
{
delete buf;
return 3;
}
sprintf( ver, "%d.%d.%d.%d"
, pvi->dwProductVersionMS >> 16
, pvi->dwFileVersionMS & 0xFFFF
, pvi->dwFileVersionLS >> 16
, pvi->dwFileVersionLS & 0xFFFF
);
delete buf;
return 0;
}