我也再给个答案:
var versize:integer;pp
char;
pp1:^VS_FIXEDFILEINFO;
LastVer1, LastVer2, LastVer3, LastVer4:WORD;
pbuflen:integer;
versize:=getfileversioninfosize(pchar(FilePath+Filename), pbuflen);
pp:=stralloc(versize+10);
if getfileversioninfo(pchar(FilePath+Filename), 0, versize, pp) then
begin
if verqueryvalue(pp, '/', pointer(pp1), pbuflen) then
begin
//此处得到的是数字型的版本号,是真正的文件版本号, 一般不显示在"文件属性"的版本窗口中的
//此部分可以和字符串显示的版本号不同
LastVer1:=(pp1.dwFileVersionMS and $FFFF0000) shr 16;
LastVer2:=pp1.dwFileVersionMS and $0000FFFF;
LastVer3:=(pp1.dwFileVersionLS and $FFFF0000) shr 16;
LastVer4:=pp1.dwFileVersionLS and $0000FFFF;
end
end;