Activex里调用Invoke函数在IE9下导致IE崩溃,IE8以下都正常,求解决办法!
附上源码。IDispatch *m_spCallBack;//内部与线程进行事件激活
HRESULT CMCCtrl::FireOnEvent(UINT uMsg, WPARAM wParam,LPARAM lParam, BOOL& bHandled)
{
VARIANT avarParams[2]={*((VARIANT*)(wParam)),*((VARIANT*)(lParam))};
  if(m_spCallBack) 
{
VARIANT varResult;
 
DISPPARAMS params = { avarParams, NULL, 2, 0 }; 
m_spCallBack->Invoke(0,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,&params, &varResult, NULL, NULL);
}
OnEventCallBack(avarParams[0],avarParams[1]);

return S_OK;
}
// 设置消息回调
STDMETHODIMP CMCCtrl::SetCallBack(VARIANT scriptCallback)
{
m_spCallBack = scriptCallback.pdispVal;
return S_OK;
}

解决方案 »

  1.   

    试了,执行到m_spCallBack->Invoke(0,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,&params, &varResult, NULL, NULL);
    这句就提示内存访问冲突然后就崩了
      

  2.   

    也遇到一样的问题,貌似每次都是jscript9.dll挂了
      

  3.   

    IE9下面许多东西都有变化。
    可参考下面的博客看一下。我也遇到这个问题,现在还没有解决。大家一起研究一下。
    http://www.cnblogs.com/_franky/archive/2011/03/16/1986005.html
      

  4.   

    设置Invoke两个函数中你没有设置的异常字段,得到错误码