`

vc获取网页内链接

阅读更多

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 EnumAnchorElement(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的接口指针
//EnumForm(spDocument2); //枚举所有的表单
//EnumAllElement(spDocument2);//枚举所有字段
EnumAnchorElement(spDocument2);//获取内嵌网页
}
}
}


void EnumAnchorElement(IHTMLDocument2 * pIHTMLDocument2) //获取内嵌网页
{
if (!pIHTMLDocument2) return;
HRESULT hr;

CComQIPtr<IHTMLElementCollection> spAllElement;
hr=pIHTMLDocument2->get_links(&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 <IHTMLAnchorElement, &IID_IHTMLAnchorElement> pElement(pDisp);
BSTR bHref;
pElement->get_href(&bHref);
CString strHref=bHref;
AfxMessageBox(strHref);
}
}

}

//-----------结束--------------------//

2.执行代码:

void CDemoDlg::OnOK()
{
// TODO: Add extra validation here
::CoInitialize(NULL); //初始化COM
EnumIE(); //枚举浏览器
::CoUninitialize(); //释放COM
//CDialog::OnOK();
}

分享到:
评论

相关推荐

    vc webbrowser取得所有超链接及链接标题

    vc webbrowser获得网页所有超链接及链接标题。

    VB获取指定网址下网页的所有链接及图片.rar

    VB获取指定网址下网页的所有链接及图片,比如实例中是抓取163首页上的所有链接及图片,每个链接都有抓到,当然JS和IFRAME的除外,图片也可以抓取并显示出来,不过你的网速如果慢的话,那需要耐心等待了。程序用到了...

    VC++ 控制IE网页操作

    自动监控获取网络资源 以及网页外部链接 内部是全部源码,保证VC6.0可以运行,需要的可以下载下来参考

    一个简单控件与网页交互的例子

    本工程VC2008 一个简单控件与网页交互的例子,js通过点击事件获取网页中的链接地址,js把链接地址作为参数调用控件,控件把结果返回。

    1066.zip_网络编程_Visual_C++_

    vc获取网页中的所有链接vc获取网页中的所有链接

    获取系统信息的小程序VC源代码

    主要的功能有:1 取得系统内存信息2 取得操作系统信息3 不规则窗口4 系统热键5 取得网卡的MAC地址6 取得本地IP地址7 关机,重新启动8 网页链接9 注册表操作10 拖动的TRACER11 系统托盘图标12 右键菜单13 98下隐藏进程 ...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    VC++实现WebBrowser控件中获取鼠标点击事件和超链接

    用一个基本窗口MFC程序实现WebBrowser控件对指定网页页面的加载、展示、点击事件响应,以及实现对鼠标在页面中点击标签事件的捕获,并且返回标签的超链接。 在VS2010环境下编译通过。

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 开发实例源码包

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    若干源程序资料12.rar

    2012-06-11 21:01 909,116 VC++动态链接库(DLL)编程.pdf 2012-06-11 21:25 138,752 VC++开发BHO插件——定制你的浏览器.doc 2012-06-11 21:33 800,368 VC绘图 游戏简易教程.pdf 2012-06-11 21:41 21,331 ...

    asp.net知识库

    C#中利用GetOleDbSchemaTable获取数据库内表信息[原创] 如何解决ACCESS中SELECT TOP语句竟然返回多条记录的问题? Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM ...

    C#浏览器编程,学习使用

    //可以查看页面源文件和网页链接状态的功能(可供分析网站的路径),具备// //常用的门户引擎搜索功能。 // //******************************************************************// namespace CSharp浏览器 { ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸装它。仅当无用户正在使用光盘时,该命令才会成功。该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。 chsh 1.作用 ...

Global site tag (gtag.js) - Google Analytics