获取文件版本号

function GetVer(FName: string): string;
var
InfoSize, Wnd: DWORD;
VerBuf: Pointer;
szName: array[0..255] of Char;
Value: Pointer;
Len: UINT;
TransString: string;
begin
InfoSize := GetFileVersionInfoSize(PChar(FName), Wnd);
if InfoSize <> 0 then
begin
GetMem(VerBuf, InfoSize);
try
if GetFileVersionInfo(PChar(FName), Wnd, InfoSize, VerBuf) then
begin
Value := nil;
VerQueryValue(VerBuf, '\VarFileInfo\Translation', Value, Len);
if Value <> nil then
TransString := IntToHex(MakeLong(HiWord(Longint(Value^)), LoWord(Longint(Value^))), 8);
Result := '';
StrPCopy(szName, '\StringFileInfo\' + TransString + '\FileVersion');
//^^^^^^^此处换成ProductVersion得到的是"产品版本"
if VerQueryValue(VerBuf, szName, Value, Len) then
Result := StrPas(PChar(Value));
end;
finally
FreeMem(VerBuf);
end;
end;
end;

posted @ 2021-05-06 11:36  绿水青山777  阅读(85)  评论(0编辑  收藏  举报