別EXEにあるIEオブジェクトを操作

解決


かべ  2009-04-28 10:14:56  No: 101678  IP: 192.*.*.*

環境:VB6;SP6 OS;XPSP3

VBで起動中のIEを探しだして、そのDOMを操作することは可能ですが
別EXEにある(埋め込み)IEを操作できず困っています。

VBで別EXEにあるIEオブジェクトを操作することは可能なのでしょうか?

下記リンクのやり方でできそうな感じですがどうでしょうか?
http://www.usefullcode.net/2006/12/ieihtmldocument2.html

ご教示願います。

編集 削除
魔界の仮面弁士  2009-04-28 15:34:41  No: 101679  IP: 192.*.*.*

操作対象のウィンドウハンドル(クラス名が "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

編集 削除
かべ  2009-04-28 16:47:26  No: 101680  IP: 192.*.*.*

なるほど〜
ありがとうございます。
勉強になりました。

編集 削除