在MFC中由于WebBrowser实现了IWebBrowser2接口,我可以通过get_Document方法获得文档中的IDispatch的指针。LPDISPATCH CWebBrowser2::GetDocument()
{
LPDISPATCH result;
InvokeHelper(0xcb, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}很明显VB是面向对象的 WebBrowser1.Document 并不能获得 IDispatch指针。有什么办法可以让我在DLL中获取WebBrowser1文档的LPDISPATCH ?或者说如何操作WebBrowser对象?

解决方案 »

  1.   

    LPDISPATCH的定义是这样的。
    IDispatch* LPDISPATCH;   //指针类型
    而IDispatch是个类,就是说LPDISPATCH是个类的指针类型.
    在VB中可以这样取得类的指针地址:   Dim ClassAddress As Long   '定义类地址
       CopyMemory ClassAddress,WebBrowser1,4
       
       '这时,ClassAddress 就是WebBrowser1对象的类指针地址
       '如果是在VB中使用,可以直接用CopyMemory把类型复制回来使用,如:
       Dim WebDoc As WebBrowser
       CopyMemory WebDoc, ClassAddress, 4
       WebDoc.Navigate "http://www.baidu.com"   '如果从VB中传递给VC使用,要看你的接口函数是如何做的,通常按值传递即可,
       '如果失败,也可以尝试一下按地址传递,如:
       YourVCFunction ByVal ClassAddress
      

  2.   

    thx  马上试试     : )