Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
WebBrowserコントロールで新しいウィンドウを開く
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=2568#CommentId20106
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 ()
投稿日時
2008/9/5 03:39:00
>>8
> CanGoBackなどが無いみたいなので
COM版ではプロパティではなく、CommandStateChange イベントでの実装となります。
これは .NET 版の CanGoBackChanged/CanGoForwardChanged イベントに相当するものです。
http://support.microsoft.com/kb/811603/ja
> [案2]のやり方がよくわからなくて
どの部分が分からなかったのかを具体的に教えていただければ、追加説明しますよ。
ソースをダウンロードできるので、まずは試してみてください。
(VB2008 版では無く VB2005 ですが、一応読み込めるかと)
別ウィンドウで開いても、IE ではなく、自アプリの新しいタブに表示されるかと思います。
もし現在のホームページにリンクが無い場合は、サンプル中の
Me.WebBrowser1.GoHome()
の部分を、
Me.WebBrowser1.Navigate("http://~~/")
などとして試してみると良いでしょう。
> もう少し詳しく教えていただけないでしょうか?
ソースの内容を大まかに書くと、こんな感じです。
(1) WebBrowser を継承して、独自の ExWebBrowser コントロールを作成している。
(2) その ExWebBrowser では、COM 版の NewWindow2 イベントが使えるようにしてある。
(3) なので、サンプルにある ExWebBrowser をフォームに貼る(または、それに相当するコードを手で書く)事で、NewWindow2 イベントを使用可能となる。
(4) NewWindow2 イベント内で ppDisp をセットすると、任意の WebBrowser に表示させることができる。
細かく書こうとすると、ActiveXInstance プロパティ経由で .NET 版 WebBrowser が内部で利用している COM 版 WebBrowser にアクセスし、AxHost.ConnectionPointCookie クラスを通じて、COM インターフェイス DWebBrowserEvents2 の NewWindow2 イベントを、.NET 側に用意した「Public Event NewWindow2」のイベントとして公開して云々…というややこしい話になってしまうので、ソースの意味を理解するのは後回しにした方が良いかも。
ちなみに IE7 や IE8 を導入済みの場合、[新しいウィンドウで開く]とは別に、[新しいタブで開く]の機能がありますが、このサンプルではそれには対応できません。
もし、IE7/IE8のタブ機能にまで対応させたいのであれば、NewWindow2 ではなく、NewWindow3 イベントを用いる必要があります。
http://www.microsoft.com/japan/msdn/workshop/author/dhtml/overview/tab_impact.aspx