C++模拟网页点击

void dlg_playcominfo::DocumentCompleted(IDispatch *disp, VARIANT *&url)
 {
	 CComPtr<IDispatch> pDisp = NULL;
	 CComPtr<IWebBrowser2>   wb  =m_browser->GetWebBrowser2();
	 if(SUCCEEDED( wb->get_Application(&pDisp))) 
	 {
		 if(disp == pDisp) //表示加载完成(iframe取消)
		 {			
			 std_string u;
			 u  =url->bstrVal;	
			 CComPtr<IDispatch> pPre = NULL;
			 CComPtr<IHTMLDocument2> pDocTemp = NULL;
			 if(u.iContains("18000/index.php/client/qqlogin"))
			 {		
		 		if(SUCCEEDED(wb->get_Document(&pPre))) //get_Document
		 		{
		 			if(SUCCEEDED(pPre->QueryInterface(IID_IHTMLDocument2, (void **)&pDocTemp))) 
		 			{
		 				CComPtr<IHTMLWindow2>  pWin;
		 				if(SUCCEEDED(pDocTemp->get_parentWindow(&pWin))){
							VARIANT res;
							std_wstring ep(elseParams);
							std_wstring  temp;
							temp.AppendFormat(L"getimgurl(%s);",ep.c_str());
							BSTR js = SysAllocString(temp.c_str());
							BSTR jst = SysAllocString(L"javascript");
							HRESULT   hr = pWin->execScript(js,jst,&res);
							SysFreeString(js);
							SysFreeString(jst);
						}
		 			}
		 		}
			 }
			 else  if(u.iContains("sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url"))
			 {
				 
				 if(SUCCEEDED(wb->get_Document(&pPre))) //get_Document
				 {
					 if(SUCCEEDED(pPre->QueryInterface(IID_IHTMLDocument2, (void **)&pDocTemp))) 
					 {				
						 CComPtr<IHTMLElementCollection>   pAllElem = NULL;
						 HRESULT hr = pDocTemp->get_all(&pAllElem);//get_all
						 if(SUCCEEDED(hr) && pAllElem) 
						 {
							 LONG lcount;
							 hr = pAllElem->get_length(&lcount);
							 if(SUCCEEDED(hr))
							 {
								 VARIANT        ElemName;
								 VARIANT        ElemIndex;
								 int  k =0;
								 for(int i=0; i<lcount; i++) //遍历
								 {
									 /

									 CComPtr<IDispatch> pDisp2 = NULL;
									 ElemName.vt = VT_INT;
									 ElemName.intVal = i;
									 ElemIndex.vt = VT_INT;
									 ElemIndex.intVal = i;

									 hr = pAllElem->item(ElemName, ElemIndex, &pDisp2);
									 if(SUCCEEDED(hr) && pDisp2) 
									 {
										 CComPtr<IHTMLElement> pElement2 = NULL;
										 hr = pDisp2->QueryInterface(IID_IHTMLElement, (void**)&pElement2);
										 if(SUCCEEDED(hr) && pElement2) 
										 {
											 BSTR bStrTagName2,clsn;
											 if(SUCCEEDED(pElement2->get_tagName(&bStrTagName2)))
											 {
												 if (_wcsicmp(bStrTagName2, L"SPAN")==0)
												 {
													 if(SUCCEEDED(pElement2->get_className(&clsn)) && clsn  )
													 {
														 if(_wcsicmp(clsn, L"btn_s1_h28_r")==0 ) //类名
														 {
															 pElement2->click();
														 }
													 }
												 }
											 }
										 }
									 }
									 //
								 }
							 }
						 }
					 }
				 }
				 
			 }
		 }
	 }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值