【環境・言語】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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
Excel2007 でのチェックボック...
-
エクセルVBAでセル番地を指定し...
-
現在アクティブになっているオ...
-
C#で画像をクリップボードへの...
-
「SHDocVw」の意味
-
コードでオブジェクトを最前面に
-
文字列で小数点以下の0を削除し...
-
【エクセル】複数のTextBoxに共...
-
LoadImage関数について(VC++)
-
ディスクの総セクタサイズを取...
-
VBAで選択範囲外の図形(オブジ...
-
VBからCrystalReportsへSQL文を...
-
アクセス 名前のつけ方について。
-
VB6にて文字型変数の内容をオブ...
-
Accessのフォーム上にエクセル...
-
using文の使い方について
-
Doevents をご教授ください。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
Excel VBAでマウスの左クリック...
-
文字列で小数点以下の0を削除し...
-
現在アクティブになっているオ...
-
日本語の文字化けを直す方法
-
エクセルVBAでセル番地を指定し...
-
【エクセル】複数のTextBoxに共...
-
ユーザーフォームのインポート...
-
VBAでフォームのコントロールの...
-
コードでオブジェクトを最前面に
-
ExcelのシートをAccessで表示し...
-
Access からオブジェクトとして...
-
PowerpointVBAで指定のShapeオ...
-
「SHDocVw」の意味
-
Excel2007 でのチェックボック...
-
サブルーチンにオブジェクト名...
-
txtNo,txtDate等の意味
おすすめ情報