IWebBrowser2调用javascript

qwqwqw408 qwqwqw408 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
先看下代码,如下

void MyBrowser::CallJavaScript(OLECHAR FAR* funcName)
{
HRESULT hr;
IDispatch* pDocDispatch = NULL;
IDispatch* pScriptDispatch = NULL;
IHTMLDocument2* pDocument = NULL;

DISPID dispid;
m_pBrowser->get_Document(&pDocDispatch);
if(SUCCEEDED(hr))
{
hr = pDocDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pDocument);
if(SUCCEEDED(hr))
{

hr = pDocument->get_Script(&pScriptDispatch);



if(SUCCEEDED(hr))
{
CComBSTR funNameStr(funcName);
hr = pScriptDispatch->GetIDsOfNames(IID_NULL, &funNameStr, 1,LOCALE_SYSTEM_DEFAULT, &dispid);

if(SUCCEEDED(hr))
{
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof(dispparams));
dispparams.cArgs = 0; nParamCount;
dispparams.rgvarg = new VARIANT[dispparams.cArgs];
dispparams.cNamedArgs = 0;

EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1; initialize to invalid arg
hr = pScriptDispatch->Invoke(dispid,IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,&dispparams,NULL,&excepInfo,&nArgErr);
}
}
}

}
}

m_pBrowser 是IWebBrowser2对象。在这里GetIDsOfNames总是执行失败,返回值的提示是未知的名称,好像是没有找到相关函数,但是网页里面的确是有这个函数的。奇怪的是,当我在网页onload时调用了一下这个函数后,再执行这个方法时GetIDsOfNames就返回成功了。好像需要先调用一下,才能找到。但是找到后,invoke那里却异常了。很头疼,不知道什么原因,迫切需要大家的帮助,谢谢。
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
qwqwqw408
嵌入开发(WinCE) 19,524 成员 41,565 内容