DOBON.NET DOBON.NETプログラミング掲示板過去ログ

IInternetSecurityManagerでのHtmlElement処理について

環境/言語:[xp/vb2005]
分類:[.NET]

webbrowserでスクリプトの制御処理の為、以下のホームページを参考にWebBrowserを使用させて頂いているのですが、リンクの実行が出来なくて困っています。

VB2005に付いている標準のWebBrowserでしたら問題なく処理出来るのですが、正直COM Interopは全く分からず、どうすれば良いのか分かりません。


どこを直したら上手くいきますでしょうか?

それとも、IInternetSecurityManagerを使う場合は、全く処理が異なるのでしょうか?


For Each anchor As HtmlElement In AxWebBrowser1.Document.Links
If anchor.InnerText = "次のページ" Then
anchor.InvokeMember("click")
End If
Next




「参考ホームページ」
Microsoft Web Browserコントロールのセキュリティを制御する
http://codezine.jp/article/detail/246?p=2
エラーは以下のようなエラーが出てしまいます。


型 'mshtml.HTMLAnchorElementClass' の COM オブジェクトをクラス型 'System.Windows.Forms.HtmlElement' にキャストできません。COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。
おそらく、AxWebBrowser1.Document.Linksコレクションに含まれるものがmshtml.HTMLAnchorElementClassなので、
これにはClickメソッドがあるようですので試してみてはいかがでしょうか。
※Microsoft.shtmlを参照設定に追加してください。
 なお、私は試していません。スミマセン。

For Each anchor As mshtml.HTMLAnchorElementClass In AxWebBrowser1.Document.Links
If anchor.innerText = "次のページ" Then
anchor.Click()
Exit For
End If
Next

ちなみにお伺いしたいのですが、

> webbrowserでスクリプトの制御処理の為

とありますが、具体的にはどのようなことを行いたいのでしょうか?
(例えば、スクリプトを無効にする・ActiveXを実行しない・等)

上記のようなことでしたら、標準のWebBrowserを利用した方が色々と都合がよいので、標準のWebBrowserをベースに、以下のサイトを参考に実現しております。

http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2006/09/webbrowser_1de3.html
■No28949に返信(タラオさんの記事)

> For Each anchor As mshtml.HTMLAnchorElementClass In AxWebBrowser1.Document.Links
> If anchor.innerText = "次のページ" Then
> anchor.Click()
> Exit For
> End If
> Next
>


タラオさん、有り難うございます。
教えていただいたコードで出来ました。
おかげで止まってた問題が解決いたしました。



> ちなみにお伺いしたいのですが、
>
>>webbrowserでスクリプトの制御処理の為
>
> とありますが、具体的にはどのようなことを行いたいのでしょうか?
> (例えば、スクリプトを無効にする・ActiveXを実行しない・等)
>


あるホームページのスクリプト必ずスクリプトエラーが出てしまうので、無効にしたかったのです。(自動巡回だと、そこで止まってしまう為)

>http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2006/09/webbrowser_1de3.html


有り難うございます。
こちらも知っていたのですが、すでに前記のサンプルコードで大部分を作っていたので、変更しようかどうしようか迷っていました。

ともあれ、タラオさんのおかげで解決しました。
有り難うございました。
解決済み!

> あるホームページのスクリプト必ずスクリプトエラーが出てしまうので、無効にしたかったのです。(自動巡回だと、そこで止まってしまう為)

スクリプトエラーの回避だけであれば、.net標準のWebBrowserのScriptErrorsSuppressedプロパティをTrueにすればエラーのメッセージボックスは表示されません。
もちろん、スクリプト自体を無効にしたい場合には、この方法は役に立ちませんが。

すでに解決済みになっていますので、参考まで。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板