Программирование на Delphi и не только Получение версии Exe и DLL файлов | Программирование на Delphi и не только

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