方法1:读取注册表
function GetIEVersion : string; //获得IE的版本号
var reg : TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
result := '';
try
if reg.OpenKey('\SOFTWARE\Microsoft\Internet Explorer', false) then //在win10下必须管理员身份才能运行
begin
result := reg.ReadString('svcVersion');
end;
finally
reg.Free;
end;
end;
缺点:在win10下需要管理员身份才能读取到。
方法2:读取主要文件版本
labVer.Caption := GetFileVersion('mshtml.dll'); //读取mshtml.dll文件的版本号
win10下不需要管理员身份也能读取,不用指定文件的路径。
function GetFileVersion(FileName : string; mainver : Boolean = false): string;
var
V1, V2, V3, V4: Word;
VerInfoSize, Dummy, VerValueSize: DWORD;
VerInfo: Pointer;
VerValue: PVSFixedFileInfo;
begin
Result := '';
try
VerInfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
if mainver then
Result := Format('%d.%d', [V1, V2])
else
Result := Format('%d.%d.%d.%d', [V1, V2, V3, V4]);
end;
FreeMem(VerInfo, VerInfoSize);
except
Result := '';
end;
end;