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.
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.