Delphi FAQ >> Файлы и каталоги
function GetFileVersion(const sFilename: String; var nValue1, nValue2, nValue3, nValue4: Integer): String;
var
pInfo, pPointer: Pointer;
nSize: DWORD;
nHandle: DWORD;
pVerInfo: PVSFIXEDFILEINFO;
nVerInfoSize: DWORD;
begin
Result := '?.?.?.?';
nValue1 := -1;
nValue2 := -1;
nValue3 := -1;
nValue4 := -1;
nSize := GetFileVersionInfoSize(PChar(sFilename), nHandle);
if (nSize <> 0) then
begin
GetMem(pInfo, nSize);
try
FillChar(pInfo^, nSize, 0);
if (GetFileVersionInfo(PChar(sFilename), nHandle, nSize, pInfo)) then
begin
nVerInfoSize := SizeOf(VS_FIXEDFILEINFO);
GetMem(pVerInfo, nVerInfoSize);
try
FillChar(pVerInfo^, nVerInfoSize, 0);
pPointer := Pointer(pVerInfo);
VerQueryValue(pInfo, '\', pPointer, nVerInfoSize);
nValue1 := PVSFIXEDFILEINFO(pPointer)^.dwFileVersionMS shr 16;
nValue2 := PVSFIXEDFILEINFO(pPointer)^.dwFileVersionMS and $FFFF;
nValue3 := PVSFIXEDFILEINFO(pPointer)^.dwFileVersionLS shr 16;
nValue4 := PVSFIXEDFILEINFO(pPointer)^.dwFileVersionLS and $FFFF;
Result := IntToStr(nValue1) + '.' + IntToStr(nValue2) + '.' + IntToStr(nValue3) + '.' + IntToStr(nValue4);
finally
FreeMem(pVerInfo, nVerInfoSize);
end;
end;
finally
FreeMem(pInfo, nSize);
end;
end;
end;
Если нужно скачать разные DLL — steam.dll