投稿者 魔界の仮面弁士  () 投稿日時 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