Hallo,
ich habe nach viel rumprobieren selber eine Lösung gefunden, die herforragend funktioniert. Eigentlich sollte jeder, der noch TWebbrowser benutzt, standartmäßig SetWebbrowserMode(11,'MeineAnwendung.exe'); setzen. Dann werden die Seiten perfekt dargestellt.
Bitte nicht vergessen, dass dazu Admin-Rechte nötig sind!
Übrigens: Auch wenn kein Internetexplorer 11 installiert ist, so führt der Aufruf SetWebbrowserMode(11) dennoch zum Erfolg, da dann der nächst-niedrigere Internetexplorer verwendet wird.
Funktioniert sowohl bei 32Bit als auch bei 64Bit, da Windows automatisch umleitet.
Delphi-Quellcode:
function SetWebbrowserMode(Mode: integer; AppName: string = ''):boolean;
const
REG_KEY = 'SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION';
var
Reg: TRegistry;
Value: Integer;
Erfolg:boolean;
begin
Erfolg:=false;
if AppName = '' then
AppName := ExtractFileName(Application.ExeName);
Case Mode of
7 : Value := $1B58;
8 : Value := $22B8;
9 : Value := $270F;
10 : Value := $2AF7;
11 : Value := $2EDF;
end;
Reg := TRegistry.Create(KEY_ALL_ACCESS);
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(REG_KEY, True) then
begin
Reg.WriteInteger(AppName, Value);
Reg.CloseKey;
erfolg:=true;
end;
finally
Reg.Free;
Result:=Erfolg;
end;
end;
Beispielaufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not SetWebbrowserMode(11,'MeineAnwendung.exe')then showmessage('Sie haben keinen Schreibzugriff auf die Registrierungsdatenbank. Bitte informieren Sie Ihren Administrator');
end;