TWebBrowserは、独自のNewWindow2イベントを介してDWebBrowserExents2::NewWindow2を公開します
したがって、イベントを処理し、イベント送信者に自動化インターフェースを提供します
procedure TForm1.WebBrowser1NewWindow2(
ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin
// create a new browser (e.g. hosted on a new tab /MDI form/ top level window)
// and expose the browser as a property of the new window.
// Here a form2 object is created to host the new webbrowser instance
...
form2.InitNavigate=False;//the navigation will be triggered after this event
form2.Visible=False;//new window is only for getting the url
ppDisp := form2.WebBrowser1.Application;
form2.Show;
end;
これで、form2のBeforeNavigate2イベントハンドラーで新しいウィンドウのURLを取得できます。イベントをキャンセルすると、ShellExecuteを使用してデフォルトのブラウザを起動できます。
Windows SP SP2以降のみをサポートしている場合は、新しいウィンドウが作成される前に、引数にURLを提供するNewWindow3イベントをフックできます。