vc下使用COM创建浏览器,调用IDispatch::Invoke提示脚本错误
有没有使用COM做过浏览器的,现在有这么个情况,不知何解
新建一个CWebBrowserEx类,包含IWebBrowser2对象创建浏览器,在一个对话框上使用CWebBrowserEx创建浏览器,由于按键时需要判断,如果是在网页的输入框,按照网页执行,如果不是,按键的消息需要返回给应用程序,但在调用JavaScript时,总是提示当前脚本错误,找不到对象,调用JavaScript函数大致如下:
CComPtr<IHTMLDocument2> pDocument;
CComPtr<IDispatch> spScript;
if (GetHtmlDocument() == NULL) // 获取Html
return FALSE;
hr = GetHtmlDocument()->QueryInterface(IID_IHTMLDocument, (void**) &pDocument);
if (!SUCCEEDED(hr))
{
pDocument= NULL;
return FALSE;
}
if (SUCCEEDED(pDocument->get_Script(&spScript)))
{
if (SUCCEEDED(spScript->GetIDsOfNames(IID_NULL,&bstrMember,1,
LOCALE_SYSTEM_DEFAULT,&dispid)))
{
bFind = true;
}
else
{
spScript.Release();
}
}
if(!bFind)
{
pDocument.Release();
return FALSE;
}
hr = spScript->Invoke(dispid,IID_NULL,0,
DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
调用这一句之后就提示脚本错误,可以确定的是,Invoke函数中的参数都是正确的
代码是从另外一个项目中剥离出来,那个项目中就没有问题,我现在就有问题,这是什么原因呢?有没有遇到过这种情况的,求解