A TIEVersion komponens segítségével eldönthetjük, hogy az adott számítógépen milyen verziójú MS Internet Explorer van telepítve. Erre sokszor szükségünk lehet, ha olyan alkalmazást készítünk, mely kihasználja az Explorer nyújtotta lehetőségeket.
A mellékelt példaprogram megnyitása előtt az IEVersion.pas-ban lévő komponenst telepítenie kell a Delphi alá.
A MajorVersion property-ből tudhatjuk meg az IE fő verziószámát, míg a MinorVersion-ból az alverziószámot.
A BuildNumber property árulkodik arról a számról, ami az IE fordítási számát takarja.
A meghatározáshoz a Shdocvw.dll állomány verziószámát kérdezzük le a komponens konstruktoránál.
constructor TIEVersion.Create(AOwner: TComponent);
var
dir: array[0..MAX_PATH+1] of char;
size: DWORD;
data, lang, info: pointer;
i, c: integer;
s, s2: string;
begin
inherited;
GetSystemDirectory(dir, MAX_PATH);
size:=MAX_PATH+1;
size:=GetFileVersionInfoSize(PChar(dir+'\shdocvw.dll'), size);
if size>0 then begin
GetMem(info, size);
try
if GetFileVersionInfo(PChar(dir+'\shdocvw.dll'),
MAX_PATH+1, size, info) then begin
size:=255;
if VerQueryValue(info, '\VarFileInfo\Translation', lang,
size) then begin
if VerQueryValue(info, Pchar(Format('\StringFileInfo\
%0.4x%0.4x\%s'#0, [LoWord(LongInt(
lang^)), HiWord(LongInt(lang^)),
'FileVersion'])), data, size) then begin
s:=StrPas(data);
c:=0;
s2:='';
for i:=1 to Length(s) do begin
if s[i]='.' then begin
case c of
0: FMajorVersion:=StrToInt(s2);
1: FMinorVersion:=StrToInt(s2);
2: FBuildNumber:=StrToInt(s2);
end;
inc(c);
s2:='';
end else begin
s2:=s2+s[i];
end;
end;
end;
end;
end;
finally
FreeMem(info, size);
end;
end;
end;