IE BHO的IObjectWithSite接口

Internet Explorer的BHO的对象必须实现IObjectWithSite接口.该接口是IE用来对插件进行管理和通讯的一个接口,其有SetSite和GetSite两个方法,当IE加载和卸载Band对象的时候,调用该接口的SetSite方法,我们可以通过SetSite传进来的IUnknown指针来获取我们所需要的接口:

 

1. 获取IE的框架窗口句柄:

     HWND  hWndParent;
    CComQIPtr<IOleWindow>  m_spWnd( pUnkSite );
    if( m_spWnd )m_spWnd->GetWindow( &hWndParent );

 

2. 获取IInputObjectSite接口管理输入:

    CComQIPtr<IInputObjectSite> spInputSite( pUnkSite );

 

3. 获取IWebBrowser2接口'

     CComQIPtr<IWebBrowser2> spBrowser;

     CComQIPtr<IServiceProvider>  spService = m_pUnkSite;
      if( spService != NULL )
      {
           spService->QueryService( SID_SWebBrowserApp, IID_IWebBrowser2,  (LPVOID*)&spBrowser );

           if( spBrowser != NULL )
          {
               spBrowser->Refresh();
          }
      }

posted @ 2009-03-31 20:25  孤竹君  阅读(1677)  评论(0编辑  收藏  举报