1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| function GetFileVersion(const FileName: String): String; var VersionInfoSize, VersionInfoValueSize, Zero: DWord; VersionInfo, VersionInfoValue: Pointer; begin if not FileExists(FileName) then begin Result := '-1'; Exit; end;
Result := ''; VersionInfoSize := GetFileVersionInfoSize(PChar(FileName), Zero); if VersionInfoSize = 0 then Exit; GetMem(VersionInfo, VersionInfoSize); try if GetFileVersionInfo(PChar(FileName), 0, VersionInfoSize, VersionInfo) and VerQueryValue(VersionInfo, '\' , VersionInfoValue, VersionInfoValueSize) and (0 <> LongInt(VersionInfoValueSize)) then begin with TVSFixedFileInfo(VersionInfoValue^) do begin Result := IntToStr(HiWord(dwFileVersionMS)); Result := Result + '.' + IntToStr(LoWord(dwFileVersionMS)); Result := Result + '.' + IntToStr(HiWord(dwFileVersionLS)); Result := Result + '.' + IntToStr(LoWord(dwFileVersionLS)); end; end; finally FreeMem(VersionInfo); end; end; |