获取文件版本的代码,参考 http://hi.baidu.com/broland/blog/item/d6209245ff184845510ffe9a.html
测试很多文件都正常,但是我发现在获取腾讯RTX主文件RTX.exe的时候,“文件版本”是错误的不知道怎么回事

解决方案 »

  1.   

    //获取文件版本号 参数为完整路径function GetFileVersion(FileName: string): string;
    var
      Buf, p            : PChar;
      sver              : ^VS_FIXEDFILEINFO;
      I                 : LongWord;
      Ma, Mi, R, B      : Integer;
    begin
      Result := '1.0.0.0';                  //默认
      if not FileExists(FileName) then
        Exit;
      I := GetFileVersionInfoSize(PChar(FileName), I);
      new(sver);
      p := PChar(sver);
      GetMem(Buf, I);
      ZeroMemory(Buf, I);
      if GetFileVersionInfo(PChar(FileName), 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 := IntToStr(Ma) + '.'
            + IntToStr(Mi) + '.'
            + IntToStr(R) + '.'
            + IntToStr(B);
        end;
      Dispose(p);
      FreeMem(Buf);
    end;