如何获得文件的信息,如版本号等?

解决方案 »

  1.   

    搜索结果:
      需要包含windows 和 shellapi单元
    // fn 是文件名称和路径
    // ma,mi,r,b 是版本号
    // 如 1.0.3.20 那么 ma=1,mi=0,r=3,b=20
    function GetFileVersion(fn: string; var ma, mi, r ,b: integer):boolean;
    var
      buf, p: pChar;
      sver: ^VS_FIXEDFILEINFO ;
      i: LongWord;
    begin
      i:= GetFileVersionInfoSize(pchar(fn), i);
      new(sver);
      p:= pchar(sver);
      GetMem(buf, i);
      ZeroMemory(buf, i);
      result:= false;
      if GetFileVersionInfo(pchar(fn), 0, 4096, pointer(buf)) then
        if VerQueryValue(buf, '\', pointer(sver), i) then begin
          ma:= sVer^.dwFileVersionMS shr 16;
          mi:= sver^.dwFileVersionMS and $0000ffff;
          r:= sver^.dwFileVersionLS shr 16;
          b:= sver^.dwFileVersionLS and $0000ffff;
          result:= true;
        end;
      Dispose(p);
      FreeMem(buf);
    end;