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

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

 

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

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

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

 

 

void EnumFrame( IHTMLDocment2 *pHTML )

{

CComQIPtr<IOleContainer> spContainer( pHTML );

       if( spContainer )

       {

              CComPtr<IEnumUnknown> spEnumerator;                                                           

          

// 注:参数OLECONTF_EMBEDDINGS

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

             

HRESULT hr = spContainer->EnumObjects(

OLECONTF_EMBEDDINGS, &spEnumerator);

              if( spEnumerator )

              {

                     CComPtr<IUnknown> spUnk;

                     ULONG uFetched;  

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

                     {

                            CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> spWB(spUnk);

                            if ( spWB )

                            {

                                   ASSERT( spWB != m_spWebBrowser2 ) ;

                                   CComPtr<IDispatch> spDocDisp;

                                   hr = spWB->get_Document(&spDocDisp);                                              

                                   CComQIPtr<IHTMLDocument2> spHTML (spDocDisp) ;

if( spHTML )

{

    EnumFrame( spHTML );

}}}}}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值