Entwickler-Ecke

Internet / Netzwerk - ...beim Webbrowser neue Fenster im Standardbrowser öffnen


jakobwenzel - Di 20.02.07 14:56
Titel: ...beim Webbrowser neue Fenster im Standardbrowser öffnen
Beim Webbrowser neue Fenster im Standardbrowser öffnen

Standardmäßig werden neue Fenster beim TWebbrowser immer im Internet Explorer geöffnet, egal was der Standardbrowser ist. Dieses Verhalten lässt sich leider nur recht umständlich ändern:

Zuerst muss ein neuer Webbrowser aufs Formular gezogen werden (ich verwende hier HelpBrowser als Name), bei dem Visible auf false gesetzt wird.
In das Event OnBeforeNavigate2 des neuen Webbrowsers muss nun folgendes geschrieben werden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.HelpBrowserBeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  cancel:=true;
  ShellExecute(handle,'open',PChar(String(url)),nil,nil,SW_ShowNormal);
end;


Dies führt dazu, dass jede Seite, die über diesen Webbrowser geöffnet werden soll, im Standardbrowser geöffnet wird.
Nun muss nur noch folgendes in das Ereignis OnNewWindow2 des alten Webbrowsers geschrieben werden:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
begin
  ppDisp:=HelpBrowser.ControlInterface;
end;

Dadurch werden alle neu geöffneten Fenster im neuen Webbrowser geladen, was auf den Standardbrowser umgeleitet wird.