请问CppWebBrowser里面,知道链接的文字,如何模似点击该链接
如题,我希望在文本框中输入文字,然后在CppWebBrowser找到对应的超级链级并模似点击这个链接
[解决办法]
帮顶
[解决办法]
乘妖哥不在,我抢点分,呵呵
我用的接口来完成的,我没有用TCppWebBrowser控件!
下面以百度主页中的’贴吧‘这个标签为例来说明一下,(仅仅是示例!)
//---------------------------------------#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("贴 吧") ) { elem->click() ; //找到了,点击它。 } } }}//---------------------------------------
[解决办法]
居然抢老妖哥的风头....大家扁他
[解决办法]
if(wname==WideString("A") && winnertext==WideString("贴 吧")
&& winnerhtml==WideString("贴 吧") )
这句代码不知道怎么应用,“贴 吧”不可能每次都是中间加“ ”吧,winnerhtml==WideString("贴 吧") 的作用是什么,能不能不要这句
注意我的上面的代码是个示例。这句的作用是为了精确的找到‘贴吧’这个herf(超链接),这个是我用另1个程序分析出来的。
如果你不是要那么精准的话,可以只要判断他的InnerText是不是"贴 吧"就可以了。
如果你要找网页上其他的href。你可以用枚举的方法。我上面用的就是枚举。
while(WideString(iWebBrowser->get_StatusText())!=WideString("完成"))
{
int a=1+1 ;
}
这句不是死循环,但有的时候,由于网速等其他原因有可能陷入死循环。