Autor Beitrag
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Di 20.02.07 14:56 
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:
ausblenden 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:
ausblenden 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.