首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请教CppWebBrowser里面,知道链接的文字,怎么模似点击该链接

2012-03-07 
请问CppWebBrowser里面,知道链接的文字,如何模似点击该链接如题,我希望在文本框中输入文字,然后在CppWebBr

请问CppWebBrowser里面,知道链接的文字,如何模似点击该链接
如题,我希望在文本框中输入文字,然后在CppWebBrowser找到对应的超级链级并模似点击这个链接

[解决办法]
帮顶
[解决办法]
乘妖哥不在,我抢点分,呵呵

我用的接口来完成的,我没有用TCppWebBrowser控件!
下面以百度主页中的’贴吧‘这个标签为例来说明一下,(仅仅是示例!)

C/C++ code
//---------------------------------------#include <vcl.h>#include <mshtml.h>#pragma hdrstop#include "Unit1.h"#include "SHDocVw_OCX.h"//---------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)    : TForm(Owner){    CoInitialize(NULL);}//---------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){    IDispatch* pDisp=NULL;    IWebBrowser2 *iWebBrowser=NULL;    IHTMLDocument2* pDoc=NULL;    IHTMLElementCollection*pColl=NULL;    CoCreateInstance(CLSID_CppInternetExplorer,NULL,CLSCTX_LOCAL_SERVER,IID_IWebBrowser2,(void**)&iWebBrowser);    iWebBrowser->set_Visible(true);    iWebBrowser->Navigate2(TVariant("www.baidu.com"),TNoParam(),TNoParam(),TNoParam(),TNoParam());    while(WideString(iWebBrowser->get_StatusText())!=WideString("完成"))    {        int a=1+1 ;    }    iWebBrowser->get_Document(&pDisp);    pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);    pDisp->Release();    BSTR wsTitle;    String  s4BSTR;    pDoc->get_title(&wsTitle);    s4BSTR=String(wsTitle);    if(s4BSTR=="找不到服务器"){Application->MessageBox("网页打开失败!","",MB_OK);pDoc->Release();Application->Terminate();}       //得到HtmlElementCollection     pDoc->get_all(&pColl);     long itemcount=0;     pColl->get_length(&itemcount);  //得到网页元素总数     WideString wname,winnertext,wtitle,wclassname,winnerhtml,wouterhtml;     IHTMLElement *elem=0;     for(int i=0;i<itemcount;i++)     {          pColl->item(TVariant(i),TVariant(i),&pDisp);          if(pDisp)          {              pDisp->QueryInterface(IID_IHTMLElement,(void**)&elem);          }          if(elem!=0)          {              elem->get_tagName(&wname);              elem->get_innerText(&winnertext) ;              elem->get_innerHTML(&winnerhtml) ;              elem->get_outerHTML(&wouterhtml);              //这里就是百度主页中 贴吧的标签。              if(wname==WideString("A") && winnertext==WideString("贴 吧")                  && winnerhtml==WideString("贴&nbsp;吧") )              {                      elem->click() ;  //找到了,点击它。              }          }       }}//---------------------------------------
[解决办法]
居然抢老妖哥的风头....大家扁他
[解决办法]
if(wname==WideString("A") && winnertext==WideString("贴 吧")
&& winnerhtml==WideString("贴&nbsp;吧") )
这句代码不知道怎么应用,“贴&nbsp;吧”不可能每次都是中间加“&nbsp;”吧,winnerhtml==WideString("贴&nbsp;吧") 的作用是什么,能不能不要这句

注意我的上面的代码是个示例。这句的作用是为了精确的找到‘贴吧’这个herf(超链接),这个是我用另1个程序分析出来的。

如果你不是要那么精准的话,可以只要判断他的InnerText是不是"贴 吧"就可以了。

如果你要找网页上其他的href。你可以用枚举的方法。我上面用的就是枚举。



while(WideString(iWebBrowser->get_StatusText())!=WideString("完成"))
{
int a=1+1 ;
}

这句不是死循环,但有的时候,由于网速等其他原因有可能陷入死循环。

热点排行