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
| {
BlockKeys:
CompanyName
FileDescription
FileVersion
InternalName
LegalCopyright
OriginalFilename
ProductName
ProductVersion
}
function GetFileVersionInfo(Filename, BlockKey: String): String;
var
vSize, Dummy: DWORD;
vData, Translation, Ip: Pointer;
begin
Result := '';
vSize := GetFileVersionInfoSize(PChar(Filename), Dummy);
if (vSize >0) then
begin
GetMem(vData, vSize);
try
GetFileVersionInfoA(PChar(Filename), 0, vSize, vData);
if vData = nil then Exit;
VerQueryValue(vData, '\\VarFileInfo\\Translation', Translation, vSize);
if Translation = nil then Exit;
VerQueryValue(vData, PChar(Format('\\StringFileInfo\\%.4x%.4x\\%s', [LOWORD(LongInt(Translation^)), HIWORD(LongInt(Translation^)), BlockKey])), Ip, vSize);
if Ip = nil then Exit;
SetString(Result, PChar(Ip), vSize -1);
finally
FreeMem(vData);
end;
end;
end; |
Partager