
【環境・言語】Windows XP + IE6 + Visual Basic 2008
既に起動しているInternet ExplorerのオブジェクトをShellWindowsから探して、SHDocVw.InternetExplorer型の変数(objIE)に代入してあります。
Dim objIE As SHDocVw.InternetExplorer
'ShellWindowsから目的のIEオブジェクトを探してobjIEに代入
ここから、mshtml.HTMLDocumentを取得するところまでは分かります。
Dim objDoc As mshtml.HTMLDocument = CType(objIE.Document, mshtml.HTMLDocument)
これではなくて、.NET FrameworkのHtmlDocumentクラス(System.Windows.Forms名前空間)のオブジェクトを取得することはできるでしょうか?
↓のように無理やりやってみたら、
Dim objDoc2 As System.Windows.Forms.HtmlDocument = CType(objIE.Document, System.Windows.Forms.HtmlDocument)
↓のようなエラーが出ました。
System.InvalidCastException はハンドルされませんでした。
Message="型 'mshtml.HTMLDocumentClass' の COM オブジェクトをクラス型 'System.Windows.Forms.HtmlDocument' にキャストできません。COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。"
mshtml.HTMLDocumentを使ってHTMLを解析していくと、COMオブジェクトの解放が大変そうなので、できれば.NET Frameworkの中で操作したいと思っています。逆(.NET Framework→COM)はHtmlDocument.DomDocumentで簡単に出来るようですが、COMから.NET Frameworkへの変換は出来ないんでしょうか?
No.1ベストアンサー
- 回答日時:
System.Windows.Forms.HtmlDocumentにコンストラクタが無いのでちょっと無理なように思います
非表示の WebBrowserコントロールなどに 取得したmshtml.HtmlDocuemnt.Urlなどを与えて WebBrowserのDocumentプロパティから取得といった方法になりそうです
細かい操作をしようとすれば HTMLElementを取得してこれのDomElementを使うといった方法になりそうです
HTMLElementクラスはHTMLタグ要素の一般的なプロパティしか装備していませんから …
なるほど、コンストラクタがないから無理、と考えればいいんですね。勉強になりました。
非表示のWebBrowserを使う方法もなるほどと思いました。でも、問題のサイトはログインが必要なサイトで、WebBrowserにURLを渡しても上手く表示されませんでした。また、その後も元のIEの画面上でINPUTやSELECTに必要なデータをセットしてボタンをクリックして次の画面で・・・、という風にやっていきたいので、非表示のWebBrowserを使うやり方は残念ながらできません。
あきらめて別の方法を考えようと思います。ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
【エクセル】複数のTextBoxに共...
-
GDIオブジェクトが増える……
-
サブルーチンにオブジェクト名...
-
エクセルVBAでセル番地を指定し...
-
日本語の文字化けを直す方法
-
ChexBox1等の「1」を変数にで...
-
VB.NET Image型データをファイ...
-
文字列で小数点以下の0を削除し...
-
EXCEL VBA ユーザフォームで複...
-
Excel 終了マクロ
-
【エクセルのマクロ】クリップ...
-
Imageコントロールにグラフを表...
-
Accessのフォーム上にエクセル...
-
Access からオブジェクトとして...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
Excelシート上のマクロを登録し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Accessのフォーム上にエクセル...
-
エクセルVBAでセル番地を指定し...
-
VBAで選択範囲外の図形(オブジ...
-
Excel VBAでマウスの左クリック...
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
文字列で小数点以下の0を削除し...
-
VBでExcelの表形式の様なデザイ...
-
ExcelのシートをAccessで表示し...
-
PowerpointVBAで指定のShapeオ...
-
【エクセル】複数のTextBoxに共...
-
【エクセルのマクロ】クリップ...
-
GDIオブジェクトが増える……
-
現在アクティブになっているオ...
-
サブルーチンにオブジェクト名...
-
ビデオキャプチャについて
-
WebBrowser内のフォームをsubmi...
-
コードでオブジェクトを最前面に
おすすめ情報