トップ回答者
mshtmlの.NET Framework 2.0上でのエラー

質問
-
こんばんは。ziroと申します。
mshtmlを使ってブラウザコンポーネントに表示されたページ内の
ボタンを次のとおりクリックしています。IHTMLDocument2 document = (IHTMLDocument2)axWebBrowser1.Document;
IHTMLElementCollection forms = document.forms;
IHTMLFormElement form = (IHTMLFormElement)forms.item(0, 0);HTMLInputElementClass subm = form.item("select", 0) as HTMLInputElementClass;
subm.click();
このコードは.NET Framework 1.1 上では上手く動作するのですが
.NET Framework 2.0上ではエラーとなります。どのようにすればエラーを回避できるでしょうか。エラーはvista上のものらしく「vshost.exeは動作を停止しました」というものです。2.0での開発はWindows vista 上でVisual C# 2005 Express Editionを使用しています。
よろしくお願いいたします。
回答
-
みなさま、ご回答いただきありがとうございます。
WebBrowserを使うことは可能なのですが、過去の資産の利用を
したいと思っています。また、このような事象は再現されているようで次のような質問が
ありました。既に解決されているようなのですが、当方としては
英語力がなく、いまひとつ理解ができないものでした。
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=442959&SiteID=1
すべての返信
-
デバッガ上ではなく、コンパイル後のアセンブリでも動作しないのでしょうか?
開発製品関係はVista未対応です。
http://www.microsoft.com/japan/msdn/vstudio/support/windowsvista/faq/
Betaですが、Visual Studio 2005 Service Pack 1 Update for Windows Vista
も試してみてください。
-
「vshost.exeは動作を停止しました」 とあるので、ホストプロセスが意図せず起動してしまっているようにみえます。
*.vshost.exe を配置していませんか? また、次も参考になるかもしれません。
http://msdn2.microsoft.com/ja-jp/library/ms185330(VS.80).aspx
-
みなさま、ご回答いただきありがとうございます。
WebBrowserを使うことは可能なのですが、過去の資産の利用を
したいと思っています。また、このような事象は再現されているようで次のような質問が
ありました。既に解決されているようなのですが、当方としては
英語力がなく、いまひとつ理解ができないものでした。
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=442959&SiteID=1 -
ziro さんからの引用 また、このような事象は再現されているようで次のような質問が
ありました。既に解決されているようなのですが、当方としては
英語力がなく、いまひとつ理解ができないものでした。
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=442959&SiteID=1そこからリンクされている
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=179069&SiteID=1
が答えですね。
Misha Shneerson さんによると 「HogeClass クラスではなく、Hoge インターフェースを使え」 ということだそうです。どうやら non-creatable とマークされている COM オブジェクトに対する扱いが .NET Framework 1.1 と 2.0 とで変わったことが原因ということみたいです。と言うわけで、
HTMLInputElementClass subm = form.item("select", 0) as HTMLInputElementClass;
を
IHTMLInputElement subm = form.item("select", 0) as IHTMLInputElement;
と書き換えてみてください。