環境:Windows2000(SP4)
言語:VB6.0(SP6)
いつもお世話になっております。
又WebBrowser関連の質問なのですが、
起動済みのIEブラウザの任意のドキュメント内容を、
VBフォームに貼り付けたWebBrowserのドキュメント部に持ってくる事は
可能でしょうか?
起動済みのIEからドキュメントオブジェクトを取得するまではわかるのですが、
それを如何にしてVBフォーム内のコントロールにもってくるかが、わかりません。
中間ファイルを経由しても構いません。
APIのURLDownloadToFileは知っているのですが、「今IEに表示されている状態」を
取得したいのです。
宜しくお願い致します。
こんな感じでいけるかな……。Documentプロパティから、
現在表示中のIPersistを取得して、それを表示させてみました。
Option Explicit
Private Sub Form_Load()
Command1.Caption = "ブラウザ列挙"
WebBrowser1.Navigate2 "about:blank"
WebBrowser1.Visible = False
End Sub
Private Sub Command1_Click()
List1.Clear
Dim O As Object
For Each O In CreateObject("Shell.Application").Windows()
If TypeName(O.Document) = "HTMLDocument" Then
List1.AddItem O.Document.Title
List1.ItemData(List1.NewIndex) = O.hWnd
End If
Next
End Sub
Private Sub List1_DblClick()
Dim IEDoc As IPersistStreamInit
Dim WBDoc As IPersistStreamInit
Set WBDoc = Me.WebBrowser1.object.Document
Dim h As Long
Dim O As Object
h = List1.ItemData(List1.ListIndex)
For Each O In CreateObject("Shell.Application").Windows()
If O.hWnd = h Then
Set IEDoc = O.Document
Exit For
End If
Next
If IEDoc Is Nothing Then
MsgBox "ドキュメント取得失敗", vbInformation
Else
Dim Bin As ADODB.Stream 'IStreamインターフェイス
Set Bin = New ADODB.Stream
Bin.Type = adTypeBinary
Bin.Open
IEDoc.Save Bin, True
Bin.position = 0
WBDoc.Load Bin
Me.WebBrowser1.Visible = True
Set IEDoc = Nothing
End If
Set WBDoc = Nothing
End Sub
上記では、IPersistStreamInitインターフェイスを用いていますが、
メモリではなく、ファイル経由でのやりとりが必要な場合は、
IPersistFileインターフェイスを利用してみてください。
なお、ファイルでアクセスするにしても、オンメモリで処理するにしても、
ロケーションの制御までは組み込まれていませんから、
<a href="http://www.google.co.jp/">〜</a>
のようなリンクは正しくジャンプできますが、
<a href="wwwlng.cgi?print+200503/05030018.txt">〜</a>
のような、相対パスで記述された URL については対処できません。
これについては、もう少し考慮する必要があるかも知れませんね。
>魔界の仮面弁士さん
いつもありがとうございます。
返事が遅くなって申し訳ありません。色々ありまして、、。
ロケーションの制御に関しては、そのリンク先に移動させる事はないので問題ありません。
現状のIEのエレメント構成(画像などは不要)さえ取得できれば良いです。
教えて頂いた方法ですと、URLによってはソースが文字列として表示されるようです。
「IPersis」などをキーにログを見ると同じく魔界の仮面弁士の書き込みで、
ファイルに出力する方法があり、そちらの方が比較的安定しているように思えるので、
そちらの方向で進めていこうと思います。
対処URLでcharsetが設定されていない場合、保存したファイルを開くとき
エンコードが正しく認識されない場合がありますが、これはIEから.html形式で保存しても
同様の動きをするので、仕方のない事かな、と思います。
とりあえず、一件落着できそうです。
ありがとうございました。
ツイート | ![]() |