DLL(C++)如何操作VB中WebBrowser对象?
在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对象?
[解决办法]
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