如何得到网页中所有内嵌框架的IHTMLDocument2接口

如何得到网页中所有内嵌框架的IHTMLDocument2接口

 

IHTMLDocument2有个方法:HRESULT get_frames(IHTMLFramesCollection2 **p)

原来我以为通过该方法可以得到网页内嵌框架的IHTMLDocument2接口,但试过不行!

后来找到一种方法,即通过IOleContainer接口的EnumObjects方法。代码如下:

 

 

void EnumFrame( IHTMLDocment2 *pHTML )

{

CComQIPtr spContainer( pHTML );

       if( spContainer )

       {

              CComPtr spEnumerator;                                                           

          

// 注:参数OLECONTF_EMBEDDINGS

// 表示列举容器内的所有嵌入对象

             

HRESULT hr = spContainer->EnumObjects(

OLECONTF_EMBEDDINGS, &spEnumerator);

              if( spEnumerator )

              {

                     CComPtr spUnk;

                     ULONG uFetched;  

                     while (spEnumerator->Next(1, &spUnk, &uFetched) == S_OK)

                     {

                            CComQIPtr spWB(spUnk);

                            if ( spWB )

                            {

                                   ASSERT( spWB != m_spWebBrowser2 ) ;

                                   CComPtr spDocDisp;

                                   hr = spWB->get_Document(&spDocDisp);                                              

                                   CComQIPtr spHTML (spDocDisp) ;

if( spHTML )

{

    EnumFrame( spHTML );

}}}}}

你可能感兴趣的:(ie编程&shell编程)