如何得到网页中所有内嵌框架的IHTMLDocument2接口
2005-10-05 16:56
330 查看
如何得到网页中所有内嵌框架的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 );
}}}}}
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 );
}}}}}
相关文章推荐
- C#:如何得到一个网页的所有a标记 herf 链接代码
- IE的BHO通过IHTMLDocument2接口获得网页源代码
- 【小技巧】如何得到一个网页的所有a标记 herf 链接代码
- 根据Internet Explorer_Server窗口得到IHtmlDocument2接口
- 如何得到网页中的Frame的HTML接口
- 如何在控件的设计时得到窗体设计器中的所有控件
- 所有网页背景图放入一张图片,如何调用
- 如何得到浏览器 DOM 对象的所有属性和方法
- 输入接口返回值,然后得到一个含有所有参数名称的列表
- 【原】去掉WebBrowser内嵌网页时的边框(含有FrameSet的情况如何处理)
- 如何得到Asterisk中MYSQL里存放的所有用户的分机号
- 如何得到form下的所有的input
- 如何得到一个指定目录下的所有文件名 [Thanks:Delphi On Me,terry_lzs,panyongze]
- Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
- 一个记录集,如何得到该记录集中某一字段所有是重复记录的记录集
- Java中如何获得所有实现该接口的子类
- Lucene.Net中 FSDirectory存储方式下一个 Document是如何得到的
- 框架网页中如何编写前进后退代码
- Revit API 开发 (5): 如何得到所有的categories,创建共享参数,并把它们绑定在一起
- WinForm中如何实现网页中框架效果