1.独立代码
//-----------开始---------------------//
#include <atlbase.h>
#include <mshtml.h>
#include <winuser.h>
#include <comdef.h>
#include <string.h>
void EnumIE(void);//处理网页
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; //取得浏览器实例个数(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; //设置的URL(必须是此URL的网站才有效);
cIEUrl_Filter="http://127.0.0.1/iAgent"; //设置过滤的网址
//*******************************************************************************
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)
{
// 程序运行到此,已经找到了IHTMLDocument2的接口指针
EnumAllElement(spDocument2);//枚举所有元素
}
}
}
void EnumAllElement(IHTMLDocument2 * pIHTMLDocument2) //枚举所有元素
{
if (!pIHTMLDocument2) return;
HRESULT hr;
CComQIPtr<IHTMLElementCollection> spAllElement;
hr=pIHTMLDocument2->get_all(&spAllElement);//获取所有网页内所有元素
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);//可以获取其他特征,根据具体元素而定
CString strTemp=bTemp;
if(!strTemp.IsEmpty() && strTemp=="nodule_callerNo_txt")
//根据id是nodule_callerNo_txt(现网主叫text控件ID)获取值或作其他处理
{
IHTMLInputTextElement* input;
pDisp->QueryInterface(IID_IHTMLInputTextElement,(void**)&input);
input->get_value(&bTemp);
strTemp=bTemp;
AfxMessageBox(strTemp);
}
}
}
}
//-----------开始---------------------//
2.执行代码:
void CDemoDlg::OnOK()
{
// TODO: Add extra validation here
::CoInitialize(NULL); //初始化COM
EnumIE(); //枚举浏览器
::CoUninitialize(); //释放COM
//CDialog::OnOK();
}
分享到:
相关推荐
通过vc操作网页中的元素,从而可以轻易的截取,copy网页中的内容,模拟鼠标事件等.本代码实现了一个公司考勤管理的打卡功能,这样可以自动在指定的时间打卡.
基于VC的网页元素操作实现技术
DOM开发,用VC6获取网页WEBBROWSER2,IHTMLDOCUMENT元素
上微机vc6.0下位机单片机控制ds18b20源代码,对 温度实时采集,发送给上微机并显示在vc上。
VC调用NI公司的DAQ采集卡采集数据,设置定时器,采样率为1000Hz。
VC声音采集并播放的代码,是在网上收集的,做了小调整,主要处理声音收集,做为初级入门参考。程序运行后会在窗口内显示声音频谱曲线,不过不是太精确,水平有限,仅供参考。
VC实现音频信号采集,并且能显示波形。真的很难找到的资料
VC获取网页源文件\VC winsock2获取网页源文件
基于VC多线程的实时数据采集系统,很有帮助。
一个vc2010实现得从麦克风采集声音并同时进行播放的程序,同时实现了波形显示功能;而且可以根据需求将采集得数据存成文件,进行进一步处理和分析; 波形显示和实时播放采集到的声音;
通过vc6++实现对某一网站整体截图并生成jpg文件 不过对某些框架页面,还不能做到完美,问题就在于不能获知网页的整个宽和高
vc 实时采集程序界面、双缓存、PCI驱动、窗口切分、文件功能
用VC写的数据采集程序。简单实用。供大家参考
VC 抓取指定网页的源代码,抓取远程指定URL地址中包括的文件,并显示出网页源代码,实现了类似“采集”的功能,将远程网页的内容先读取出来,然后显示,由此可扩展成一个采集模块,添加过滤功能即可,要用到字符串...
此VC程序的主要功能是构建工业摄像头与VC软件之间的应用平台 以实现监视和分帧采集的要求
控制与访问网页元素,解析网页内容,vc6开发,效率很高
GPS数据采集程序,一,vc打开,enjoy it:)
从USB摄像头采集图像的VC源代码图象采集.rar
使用CameraDS和VC2010采集两路USB摄像头数据显示,OPENCV版本为3.3,同时采集两路USB摄像头显示,完整工程代码