C Builder 5.0以后 CppWebBrowser组件代替了原来的HTML组件 实际上 这个组件封装了Windows的Shell Doc Object和控制库(SHDOCVW.DLL) 中的IWebBrowser2接口
这个接口可以用来创建一个定制的Web浏览器应用程序 所以CppWebBrowser 组件几乎包含了一个Web 浏览器所具有的全部功能 它本身就是一个功能比较强大的浏览器 可以完成Web浏览 文件下载等诸多网络功能 。
前期开发了一些相关的小应用,积累了一点经验,特总结了一下,分享如下。(以下所有代码均在BCB6.0 Winxp 调试通过)
CppWebBrowser的使用一 自动点击网页上的超级链接
// 自动点击超链接的函数
void __fastcall MyAutoClickHyperlink(IHTMLDocument2 *spDoc)
{
IDispatch *pDisp = NULL;
IHTMLAnchorElement *pAnchorElement = NULL;
IHTMLElement *pElement = NULL;
IHTMLElementCollection *pElementColl = NULL;
long lCount = 0;
BSTR bstr;
VARIANT vTemp, vID;
spDoc->get_all(&pElementColl);
pElementColl->get_length(&lCount);
// 遍历所有元素
for(long i=0;i < lCount; i )
{
vID.vt = VT_I1;
vID.iVal = i;
pElementColl->item(vID, vTemp, &pDisp);
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLElement, (void **)&pElement)))
{
if(SUCCEEDED(pElement->QueryInterface(
IID_IHTMLAnchorElement, (void **)&pAnchorElement)))
// 如果是超链接才点击
{
BSTR Link;
pAnchorElement->get_href(&Link);//取得链接
AnsiString templink = AnsiString(Link).UpperCase();
if(templink == "HTTP://WWW.BCBGAME.COM/")
pElement->click();
}
}
}
}
点击按钮,实现当前网页的超级链接的点击动作。
void __fastcall TMainForm::Button2Click(TObject *Sender)
{
IHTMLDocument2 *spDoc = NULL;
if(!CppWebBrowser1->Busy && CppWebBrowser1->Document != NULL)
CppWebBrowser1->Document->QueryInterface(::IID_IHTMLDocument2,(void **)&spDoc);
if(spDoc)
MyAutoClickHyperlink(spDoc);
}