BHO中处理IE的事件

    IEHelperSetSite方法的实现过程中,IEHelper通知IE浏览器他想要收到所有IE触发的事件。为了能够从IE中收到事件,你必须实现IDispatch接口。

    在默认的情况下,简单的ATL对象从IDispatchImpl中继承,当IE触发了事件的时候, 你可以使用AtlAdvise来让IE通知你。仅有的一个你需要重写的IDispatchImpl方法是Invoke方法。每次IE激发了一个事件的时候,他都会调用你的Invoke方法。

    为了停止收到事件,你可以雕用AtlUnadvise方法。当IE通知你,他正在退出的时候,你必须调用AtlUnadvise传递DISPID_QUIT参数到Invoke方法。下面的代码重写了Invoke方法。就象我们看到的那样,下面的大部分代码是为了处理IE的事件并且将这些事件的名字写到IEHelper事件的窗口中。

浏览器插件-- Browser Helper Object(BHO) 四STDMETHODIMP CIEHlprObj::Invoke(DISPID dispidMember, REFIID riid,
浏览器插件-- Browser Helper Object(BHO) 四                                LCID lcid, WORD wFlags,
浏览器插件-- Browser Helper Object(BHO) 四                                DISPPARAMS
* pDispParams,
浏览器插件-- Browser Helper Object(BHO) 四                                VARIANT
* pvarResult,
浏览器插件-- Browser Helper Object(BHO) 四                                EXCEPINFO
*  pExcepInfo, UINT* puArgErr)
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-25
  • 2021-12-05
  • 2021-05-25
  • 2021-04-15
  • 2021-11-02
  • 2021-08-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
  • 2021-10-21
  • 2022-12-23
相关资源
相似解决方案