![]() |
URL in neuem Browser öffnen.
Mit dem Code:
Code:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); var NewWindow: TForm1; begin // Instanzen erzeugen NewWindow := TForm1.Create(self); NewWindow.Show; ppDisp := NewWindow.Webbrowser1.DefaultDispatch; end; , lassen sich z.B. Popups in einer neuen Instanz der eigenen Browserapplikation anzeigen, aber dabei wurde nur die Form auf der sich der Twebbrowser befindet "geklont". Ich möchte aber, dass wie beim IE mein Browser dann noch mal gestartet wird und die URL in dieser, noch mal gestartentten Browseraplikation geöffnet wird. Nun meine Frage, ist das überhaupt so leicht machbar und wenn ja, hat jemand vielleicht ein Codebeispiel bzw. einen Tip wie ich das angehen könnte? |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Programmieren allgemein" nach "Internet / IP / LAN" verschoben.
Gehört nach Internet. |
Re: URL in neuem Browser öffnen.
Ok, hat sich erledigt... weiß jetzt eine Möglichkeit!
|
Re: URL in neuem Browser öffnen.
Zitat:
|
Re: URL in neuem Browser öffnen.
Naja das Problem ist, dass die Lösung wirklich nicht sehr elegant ist, aber ich werde sie Mitteilen... vielleicht hat ja noch jemand eine andere, bessere Idee.
Man nutzt dazu einen zweiten, gehideten TWebbrowser. Im NewWindow Event des ersten Webbrowsers wird dann die Anzeige des neuen Fensters an den zweiten Webbrowser übergeben, damit man die URL des neuen Fensters bekommen kann.
Code:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin ppDisp := WebBrowser2.Application; end; Beim BeforeNavigate Event des 2ten WebBrowsers wird dann die Browser exe n och mal gestartet und dabei die URL übergeben. Und auch der Browsvorgang des 2ten Webbrowser abgebrochen.
Code:
procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var newinstance : STRING; BEGIN newinstance := url; url := ''; cancel := TRUE; ShellExecute(handle,'open',Pchar(paramstr(0)),Pchar(newinstance),'',SW_SHOWNORMAL); END; Zum Schluss muss man noch in den FormCreate Event, die Übernahme der Url einfügen:
Code:
procedure TForm1.FormCreate(Sender: TObject); begin if paramstr(1) <> '' then webbrowser1.Navigate(paramstr(1)); webbrowser2.Hide; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz