如何在 ActiveX 控件中调用页面的 Jscript 函数

STDMETHODIMP CXXXX::CallScript(BSTR bstrFunc, IDispatch *pXMLArg)
{
 HRESULT hResult = E_FAIL;
 
 IDispatch *pDispScript = NULL;
 IDispatch *pDispArg = NULL;
 
 if (!m_pHtmlDoc)
 {
  return hResult;
 }
 
 hResult = m_pHtmlDoc->get_Script(&pDispScript);
 
 //CComBSTR bstrHtml;
 //IHTMLElement *pEle;
 //pHtmlDoc->get_body(&pEle);
 //pEle->get_outerHTML(&bstrHtml);
 
 if (SUCCEEDED(hResult) && pDispScript)
 {
  DISPID dispid;
  // LOCALE_USER_DEFAULT
  hResult = pDispScript->GetIDsOfNames(IID_NULL, &bstrFunc, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
  if (S_OK != hResult)
  {
   pDispScript->Release();
   return hResult;
  }
  
  EXCEPINFO excepInfo;  
  DISPPARAMS dispparams;
  memset(&dispparams, 0, sizeof dispparams);
  dispparams.cArgs      = 1;
  dispparams.rgvarg     = new VARIANT[1];
  dispparams.cNamedArgs = 0;
  dispparams.rgvarg[0].vt = VT_DISPATCH;
  dispparams.rgvarg[0].pdispVal = pXMLArg;
  VARIANT varResult;
  UINT nArgErr = (UINT)-1;  // initialize to invalid arg
  hResult = pDispScript->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT,
   DISPATCH_METHOD,
   &dispparams, &varResult, &excepInfo, &nArgErr);
  
  delete[] dispparams.rgvarg;
  
 }
 
 return hResult;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值