環境:VB6;SP6 OS;XPSP3
VBで起動中のIEを探しだして、そのDOMを操作することは可能ですが
別EXEにある(埋め込み)IEを操作できず困っています。
VBで別EXEにあるIEオブジェクトを操作することは可能なのでしょうか?
下記リンクのやり方でできそうな感じですがどうでしょうか?
http://www.usefullcode.net/2006/12/ieihtmldocument2.html
ご教示願います。
操作対象のウィンドウハンドル(クラス名が "Internet Explorer_Server" の物)を
得られるのであれば、過去ログの下記手法で取得できるかと。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200505/05050018.txt
Option Explicit
Private Declare Function RegisterWindowMessage Lib "user32" _
Alias "RegisterWindowMessageA" _
(ByVal lpString As String) As Long
Private Declare Function SendMessageTimeout Lib "user32" _
Alias "SendMessageTimeoutA" _
(ByVal hWnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any, _
ByVal fuFlags As Long, _
ByVal uTimeout As Long, _
ByRef lpdwResult As Long) As Long
Private Declare Function ObjectFromLresult Lib "oleacc" _
(ByVal lResult As Long, _
ByVal riid As Long, _
ByVal wParam As Long, _
ByRef ppvObject As Any) As Long
Public Function WindowDOM(ByVal hWnd As Long) As Object ' IHTMLDocument
Dim lngMsg As Long
lngMsg = RegisterWindowMessage("WM_HTML_GETOBJECT")
If lngMsg = 0 Then
Exit Function
End If
Const SMTO_ABORTIFHUNG As Long = &H2
Dim lngRes As Long
SendMessageTimeout hWnd, lngMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, lngRes
If lngRes = 0 Then
Exit Function
End If
Dim IID_IHTMLDocument(3) As Long
IID_IHTMLDocument(0) = &H626FC520
IID_IHTMLDocument(1) = &H11CFA41E
IID_IHTMLDocument(2) = &HA00031A7
IID_IHTMLDocument(3) = &H372608C9
ObjectFromLresult lngRes, VarPtr(IID_IHTMLDocument(0)), 0, WindowDOM
End Function
なるほど〜
ありがとうございます。
勉強になりました。