掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WebBrowserのページ内の文字検索について (ID:147393)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Set ステートメントが使われていることからも分かりますように、 そのコードは VB6 すなわち ActiveX 版を対象としたコードです。 そもそも、VB6 が使う ActiveX (COM) 版の WebBrowser と VB2010 が使う .NET マネージの WebBrowser では扱いが異なります。 また HTMLDocument 型も同様で、COM 版と .NET 版は別物となります。 いずれも、内部で COM オブジェクトを使っているとはいえ、マネージ版は COM 版のすべての機能をラッピングしているわけでは無いからです。 対処方法の一つとしては、System.Windows.Forms.WebBrowser を使うかわりに ActiveX 版(COM 版)の WebBrowser である AxWebBrowser を使う方法があります。 http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200712/07120031.txt しかしわざわざ AxWebBrowser に切り替えずとも、COM 版のインターフェイスに キャストすることで、createTextRange メソッドを呼び出すことが可能となります。 (あるいは参照設定を追加せず、レイトバインドにて呼び出す方法もありますが、 いずれの方法を使うにせよ、COM 版のメソッドを扱うという点では一緒です。 具体的には、マネージ版の WebBrowser には ActiveXInstance プロパティ、 HTMLDocument には DomElement プロパティ が用意されており、 これらを通じて、COM 版のオブジェクトを取得できるようになっているので、 これを利用するというものです。 たとえば、WebBrowser1.Document.DomElement を使えば、そこから mshtml.IHTMLDocument2 インターフェイスを得られます。 http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement.domelement.aspx WebBrowser1.Document.Window.DomWindow なら mshtml.IHTMLWindow2 インターフェイスを得られます。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlwindow.domwindow.aspx 同様にして、DomElement プロパティ経由で mshtml.IHTMLBodyElement を得てやれば、 そこから createTextRange メソッドを呼び出せるようになるかと思います。 なお、それ以降のコードも同様に書き換える必要がありますのでご注意ください。 たとえば VB6 では、Nothing 代入で COM オブジェクトへの参照を解放できますが、 VB.NET の場合は Nothing 代入ではなく、Marshal.ReleaseComObject 等を通じた 明示的な解放操作が必要となります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.