日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

vc采集网页内frame框架下所有元素(不指定具体table/form)

發(fā)布時間:2025/4/16 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vc采集网页内frame框架下所有元素(不指定具体table/form) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.獨立代碼

//-----------開始---------------------//
#include <atlbase.h>
#include <mshtml.h>
#include <winuser.h>
#include <comdef.h>
#include <string.h>
void EnumIE(void);//處理網(wǎng)頁
CComModule _Module;? //使用CComDispatchDriver ATL的智能指針,此處必須聲明
#include <atlcom.h>
void EnumAllElement(IHTMLDocument2 * pIHTMLDocument2);

void EnumIE(void)??
{??
? CComPtr<IShellWindows> spShellWin;??
? HRESULT hr=spShellWin.CoCreateInstance(CLSID_ShellWindows);??
? if (FAILED(hr))??
? {??
? return;??
? }??????

? long nCount=0;??? //取得瀏覽器實例個數(shù)(Explorer和IExplorer)??
? spShellWin->get_Count(&nCount);??
? if (0==nCount)??
? {??
??? return;??
? }

? for(int i=0; i<nCount; i++)??
? {??
??? CComPtr<IDispatch> spDispIE;??
??? hr=spShellWin->Item(CComVariant((long)i), &spDispIE);??
??? if (FAILED(hr)) continue;
?
??? CComQIPtr<IWebBrowser2>spBrowser=spDispIE;??
??? if (!spBrowser) continue;
?
??? CComPtr<IDispatch> spDispDoc;??
??? hr=spBrowser->get_Document(&spDispDoc);??
??? if (FAILED(hr)) continue;
?
??? CComQIPtr<IHTMLDocument2>spDocument2 =spDispDoc;??
??? if (!spDocument2) continue;??????

?//Modify by jncao 2007-09-17
?//*******************************************************************************
?CString cIEUrl_Filter;? //設(shè)置的URL(必須是此URL的網(wǎng)站才有效);
??? cIEUrl_Filter="http://127.0.0.1:8082/csp/"; //設(shè)置過濾的網(wǎng)址
??? //*******************************************************************************

??? CComBSTR IEUrl;
?spBrowser->get_LocationURL(&IEUrl);
?CString cIEUrl_Get;???? //從機器上取得的HTTP的完整的URL;
?cIEUrl_Get=IEUrl;
?cIEUrl_Get=cIEUrl_Get.Left(cIEUrl_Filter.GetLength()); //截取前面N位

?if (strcmp(cIEUrl_Get,cIEUrl_Filter)==0)
?{
???? // 程序運行到此,已經(jīng)找到了IHTMLDocument2的接口指針??????
?????? EnumAllElement(spDocument2);//枚舉所有元素

?}???
? }??
}

?

void EnumFrame(IHTMLDocument2 * pIHTMLDocument2)
{??
?if (!pIHTMLDocument2) return;??????
?HRESULT?? hr;??
???
?CComPtr<IHTMLFramesCollection2> spFramesCollection2;??
?pIHTMLDocument2->get_frames(&spFramesCollection2); //取得框架frame的集合??
???
?long nFrameCount=0;??????? //取得子框架個數(shù)??
?hr=spFramesCollection2->get_length(&nFrameCount);??
?if (FAILED(hr)|| 0==nFrameCount) return;??
???
?for(long i=0; i<nFrameCount; i++)??
?{??
??CComVariant vDispWin2; //取得子框架的自動化接口??
??hr = spFramesCollection2->item(&CComVariant(i), &vDispWin2);??
??if (FAILED(hr)) continue;??????
??CComQIPtr<IHTMLWindow2>spWin2 = vDispWin2.pdispVal;??
??if (!spWin2) continue; //取得子框架的?? IHTMLWindow2?? 接口??????
??CComPtr <IHTMLDocument2> spDoc2;??
??spWin2->get_document(&spDoc2); //取得子框架的?? IHTMLDocument2?? 接口
??
??EnumAllElement(spDoc2);????? //遞歸枚舉當(dāng)前子框架?? IHTMLDocument2?? 上的所有控件
?}??
}

?

?

void EnumAllElement(IHTMLDocument2 * pIHTMLDocument2) //枚舉所有字段
{
?if (!pIHTMLDocument2) return;?
?EnumFrame(pIHTMLDocument2);?? //遞歸枚舉當(dāng)前IHTMLDocument2上的子框架frame??
?HRESULT?? hr;??

?CComQIPtr<IHTMLElementCollection> spAllElement;
?hr=pIHTMLDocument2->get_all(&spAllElement);//獲取所有網(wǎng)頁內(nèi)所有元素
?if (FAILED(hr))??return;??

?long nLength = 0;
?spAllElement->get_length (&nLength);
?for (int i = 0; i < nLength; i++)
?{
??????? CComPtr<IDispatch> pDisp;
??hr = spAllElement->item(COleVariant((long)i),COleVariant((long)0),&pDisp); //獲取單個元素
??if(SUCCEEDED(hr))
??{
???//CComQIPtr <IHTMLElement, &IID_IHTMLElement> pElement(pDisp);
???CComQIPtr<IHTMLElement, &IID_IHTMLElement> pElement;
???pDisp->QueryInterface(&pElement);
???BSTR bTemp;
???pElement->get_id(&bTemp);//可以獲取其他特征,根據(jù)具體元素而定
???CString strTemp=bTemp;
???if(!strTemp.IsEmpty() && strTemp=="callNo")//根據(jù)callNo(效能提升text控件id)是主叫號碼獲取值或作其他處理
???{
????IHTMLInputTextElement* input;
????pDisp->QueryInterface(IID_IHTMLInputTextElement,(void**)&input);
????input->get_value(&bTemp);
????if(bTemp==NULL) strTemp="null";
????else strTemp=bTemp;
????CStdioFile ioFile;
????ioFile.Open("callerno.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
????ioFile.SeekToEnd();//先定位到文件尾部
????CString strInsert=strTemp+"/n";
????ioFile.WriteString(strInsert);
????ioFile.Close();
???}
??}
?}
}

//-----------結(jié)束---------------------//

2.執(zhí)行代碼:

void CDemoDlg::OnOK()
{
?// TODO: Add extra validation here
?::CoInitialize(NULL); //初始化COM
???? EnumIE();???????????? //枚舉瀏覽器??????
???? ::CoUninitialize();?? //釋放COM
?//CDialog::OnOK();
}

總結(jié)

以上是生活随笔為你收集整理的vc采集网页内frame框架下所有元素(不指定具体table/form)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91中文字幕网 | 美国一级大黄一片免费中文 | 国产一级一片 | 中国女人内精69xxxxxx | 欧美精品一卡二卡 | 亚洲视频在线播放 | 欧美顶级metart裸体全部自慰 | 亚洲欧美日本在线 | 亚洲欧美激情一区二区三区 | 四虎在线影视 | 久久老司机 | 99re视频精品| 激情 小说 亚洲 图片 伦 | 欧美日韩69 | 伊人久久网站 | 99久久久国产精品无码网爆 | 99av国产精品欲麻豆 | 蜜臀av一区二区三区 | 麻豆精品国产精华精华液好用吗 | 亚洲乱熟女一区二区三区小说 | 久久av综合 | 国产ts丝袜人妖系列视频 | gav久久| 日韩精品免费一区二区三区 | 男女拍拍拍网站 | 日韩在线综合 | 亚洲情侣av | 欧美a∨ | 日本一级理论片在线大全 | 欧美日韩在线视频播放 | 国产高潮网站 | 亚洲精品一区二区三区区别 | 懂色av一区二区三区在线播放 | 国产精品精东影业 | 久久艹中文字幕 | 亚洲乱码av | 五月婷婷一区 | 免费观看日批视频 | 天堂av8| 欧美性极品| 无码免费一区二区三区 | 天天干天天操天天玩 | 国产精品白嫩极品美女视频 | 欧美激情自拍 | 久久久久人 | 91成品人影院 | 色屁屁www| 日本成人在线不卡 | 99精品人妻少妇一区二区 | 91视频免费网址 | 开心激情深爱 | 国产精品无码乱伦 | 男生把女生困困的视频 | 中文字幕观看在线 | 日本高清免费不卡视频 | 女性裸体下面张开 | 午夜免费看 | 欧美一级三级 | 欧美日韩国产免费观看 | 黄色www视频 | 九九精品国产 | 伊人影视大全 | 黑帮大佬和我的三百六十五天 | 黄色三级网站 | 亚洲精品午夜国产va久久成人 | 欧美瑟瑟 | 久久久久久国产精品视频 | 在线观看亚洲专区 | 亚洲三级电影 | 成人国产一区二区三区精品麻豆 | 玖玖在线视频 | 精品免费视频 | 色婷婷综合久久久久中文 | 亚洲我射 | 欧美日韩高清在线 | 天堂网在线观看视频 | 伊人网狼人| 中文字幕精品一区二 | 国产免费黄色小视频 | 黄色永久免费网站 | 欧美成人福利 | 波多野结衣不卡视频 | 久久b| 精品视频中文字幕 | 欧美性啪啪 | 日本成人精品 | 秋霞视频在线观看 | 插吧插吧网 | 日韩一区二区三 | 伊人蕉久影院 | 女人高潮被爽到呻吟在线观看 | 伦理一级片 | 亚洲欧洲成人精品久久一码二码 | 福利网站在线观看 | 日韩一区免费 | 亚洲午夜久久久久久久久 | 欧美在线观看视频一区 | 国产aa| 国产一级片网址 |