实现和IE浏览器交互的几种方法的介绍

http://tech.ddvip.com   2006年03月31日    社区交流

本文详细介绍实现和IE浏览器交互的几种方法的介绍

  实际上我们建立的是一个COM对象,DLL只不过是COM对象的一种表现形式。我们建立的COM对象需要建立和实现的方法有:

  1. IOleObjectWithSite接口的方法SetSite必须实现。实际上IE实例通过这个方法向我们的COM对象传递一个接口的指针。假设我们有一个接口指针的变量,不妨设为:

  CComQIPtr< IWebBrowser2, &IID_IWebBrowser2 > m_myWebBrowser2;

  我们就可以在方法SetSite中把这个传进来的接口指针赋给m_myWebBrowser2。 2. 在我们得到了指向IE COM对象的接口后,我们需要把自己的DLL和IE实例所发生的事件相关连,为了实现这个目的,需要介绍两个接口:

  (1) IConnectionPointContainer。这里使用这个接口的目的是用来根据它得到的IID来建立和DLL的一个特定的连接。比如我们可以进行如下的定义:

  CComQIPtr< IConnectionPointContainer,
&IID_IConnectionPointContainer >     
spCPContainer(m_myWebBrowser2);

  然后,我们需要把所有IE中发生的事件和我们的DLL进行通讯,可以使用 IConnectPoint。

  (2) IConnectPoint。通过这个接口,客户可以对连接的对象开始或者是终止一个advisory循环。IConnectPoint有两个主要的方法,一个为Advice,另一个为Unadvise。对于我们的应用来说,Advise是用来在每一个IE发生的事件和DLL之间建立一个通道。而Unadvise就是用来终止以前用Advise建立的通知关系。比如我们可以定义IConnectPoint接口如下: CComPtr< IConnectionPoint > spConnectionPoint;

  然后,我们要使所有在IE实例中发生的事件和我们的DLL相关,可以使用 如下的方法:

  hr = spCPContainer->FindConnectionPoint(
DIID_DWebBrowserEvents2, &spConnectionPoint);

责编:豆豆技术应用

正在加载评论...