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