获取iframe中的内容、查找获取指定元素(关于用c++调用WEBBROWSER控件,使用相关接口操作web页面元素的一些方法)

本文介绍了在Windows应用程序中使用C++调用WEBBROWSER控件来操作网页元素的方法,主要包括查找和获取iframe内容以及获取指定元素。通过COM接口的QueryInterface()函数实现对网页元素的接口查询和操作,提供了查找元素和遍历子框架的代码示例。
摘要由CSDN通过智能技术生成

最近开发WINDOWS下的应用程序,需要用到C++中调用WEBBROWSER控件操作网页的相关技术,查阅了一下相关文档,反复调试了几天,对其中的技术有了一些肤浅的认识,大多数C++程序员对COM应该不陌生,其实用C++操作网页,在前端应用层上主要就是对COM接口的查询与使用。以下是我写的一些代码与大家分享一下,总结一下几个关键点,

1、首先要找准元素的接口类型,html的标签(即元素类型,也许我的说法过于肤浅),有关元素类型的定义在mshtml.h头文件基本包括了所有接口类型,要是对web元素接口类型不太了解,可在网上查一下,有很多对定义有中文注释的资料;

2、要对com接口的查询(QueryInterface())格外注意,使用智能指针时的初始化声明,其实也是通过接口查询对指针进行的初始化赋值,接口的查询成败与否,直接关系到能否对网页元素进操作,所以至关重要;

 下面是一些代码和简单的注释,希望对需要的朋友们能有所帮助,

//根据类名查找网页元素
CComQIPtr<IHTMLElement> FindWebElement(CComQIPtr<IHTMLElementCollection> pEleColl,string strClassName)
{
CComQIPtr<IHTMLElement> spRetEle;
if(pEleColl == NULL)
{
//所给集合为空时,使用网页控件接口获取顶层页面的全部元素集合(这个是我程序类成员m_pWebBrowserEventHandler->m_pWebClientCall)
CComPtr<IWebBrowser2> pWeb2 = m_pWebBrowserEventHandler->m_pWebClientCall->GetWebBrowser2();
CComPtr<IDispatch> spDp =  NULL;
if(pWeb2)
{
HRESULT hr;
hr=pWeb2->get_Document(&spDp);
if(FAILED(hr))
return spRetEle;
}
else
return spRetEle;
CComQIPtr<IHTMLDocument2> pHtmlDoc2 = spDp;
pHtmlDoc2->get_all(&pEleColl);
}


long lCollCount = 0;
pEleColl->get_length(&lCollCount);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值