String __fastcall TForm1::GetFileVersion(String FileName)
{
int iVerInfoSize;
char *pBuf;
AnsiString asVer="";
VS_FIXEDFILEINFO *pVsInfo;
unsigned int iFileInfoSize = sizeof( VS_FIXEDFILEINFO );
iVerInfoSize = GetFileVersionInfoSize(FileName.c_str(), NULL);
if(iVerInfoSize!= 0)
{
pBuf = new char[iVerInfoSize];
if(GetFileVersionInfo(FileName.c_str(),0, iVerInfoSize, pBuf ) )
{
if(VerQueryValue(pBuf, "\\",(void **)&pVsInfo,&iFileInfoSize))
{
asVer = IntToStr( HIWORD(pVsInfo->dwFileVersionMS) )+".";
asVer += IntToStr( LOWORD(pVsInfo->dwFileVersionMS) )+".";
asVer += IntToStr( HIWORD(pVsInfo->dwFileVersionLS) )+".";
asVer += IntToStr( LOWORD(pVsInfo->dwFileVersionLS) );
}
}
delete pBuf;
}
return asVer;
}