.NET 2.0 axWebBrowserのNewWindow2イベントでURLを取得する | .NET Framework 2.0 と C#での開発ブログ

.NET 2.0 axWebBrowserのNewWindow2イベントでURLを取得する

今回もまた.NET 2.0 axWebBrowserについてですが、NewWindow2イベントでのURL取得方法です。

.Net2.0ではNewWindow3があるので簡単にURLが取得できるのですが、確かこれはXP SP2以降でしかイベント発生しないので、今一頼れません。
(関係ないですがイベントの発生を英語でFireっていうのはカッコいい、、、発生っていうか発射?撃て!って感じ)

なので、もちろんNewWindow3も使うのですが、NewWindow2でもURLが取得できれば色々できますね、あんなことやこんなことも、、、、

ただ、これは結構面倒?(うざい)ことやりました。
なにかというと、普通ではNewWindow2ではURL情報取得できないので、実際に一回ウィンドウを新たに開いてからそのURLを取得して、情報を戻す。っていうもう無駄なことだらけなことやります。

私の場合では
axWebBrowserを2つ用意して、ひとつは通常に使うよう、もうひとつはサイズ0で非表示、サイレントなものです。この後者のブラウザをつかってURLを取得するようにしました。

あとはメインのaxWebBrowserのNewWindow2で下記のようにします。

-----------------------------------------------------------
private void axWebBrowser_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
this.SecondBrowser.RegisterAsBrowser = true;
e.ppDisp = this.SecondBrowser.Application;
}
-----------------------------------------------------------
(SeccondBrowserはサイズ0で非表示、サイレントのやつです)

こんな感じでe.ppDispをつかって新しく開いてあげます。

次に

-----------------------------------------------------------
private void SecondBrowser_BeforeNavigate2(object sender, AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2Event e)
{
e.cancel = true;
URL = e.uRL
}
-----------------------------------------------------------

SeccondBrowserのBeforeNavigate2でさっそくキャンセル+URLの取得をしてます。
実際にはURLを取得っていうかここで色々処理してあげれば良いですね。

以上、こんな感じでURLを取得できます。