TWebbrowser meldet sich mit Trident Version 4

Donnerstag, 14. November, 2013

… obwohl der IE 10 installiert ist.

Aber mal von vorn: ich schreibe an einer Windows-Anwendung, in die ich die Komponente des Internet Explorer - eben TWebbrowser - einbinde, um Inhalte anzuzeigen. So kann man HTML und CSS zum Layouten verwenden. Klicks kann man mit seinem Programm abfangen und auswerten und so z.B. Klicks auf Links auf Routinen seiner Anwendung umbiegen.

Bei den Experimenten verhielt sich der Browser merkwürdig … bis ich per Javascript navigator.appVersion habe ausgeben lassen, was mir eine (uralte) Version 4 zum Vorschein brachte.

Natürlich war ich nicht der Erste auf der Welt, der auf dieses Problem stösst und die Suche in der unendlichen Müllhalde lies mich die Lösung finden. Welche da wäre: man muss in der Registry den Namen seiner Exe-Datei mit einer IE Version verknüpfen. Das kann man entweder in den Installer packen - oder falls es als portable Version funktionieren muss - beim Start der Anwendung ausführen.

Der Codeschnipsel, den ich in meine Anwendung gesetzt habe, sieht in Delphi so aus:

var 
    Reg: TRegistry;
begin
     Reg := TRegistry.Create;
     try
        Reg.RootKey := HKEY_CURRENT_USER;
        if Reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', True) then
        begin
             Reg.WriteInteger(ExtractFileName(paramstr(0)), 9999);
             Reg.CloseKey;
        end;
     finally
        Reg.Free
     end;
    (...)

Weiterführende Links