//获取文件版本号 参数为完整路径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;
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;