资源简介
在我们编写的程序中 如果想要实现对浏览器打开的网页进行监视 模拟操纵 动态提取用户输入 动态修改 等功能 那么请你抽出宝贵的时间 继续往下阅读 本文介绍的知识和示例程序都是围绕如何遍历 HTML 中的表单 form 并枚举出表单域的属性为目标的 对于网页中的其它元素 比如图象 连接 脚本等等 应用同样的方法都可以轻松实现 ">在我们编写的程序中 如果想要实现对浏览器打开的网页进行监视 模拟操纵 动态提取用户输入 动态修改 等功能 那么请你抽出宝贵的时间 继续往下阅读 本文介绍的知识和示例程序都是围绕如何遍历 HTML 中的表单 fo [更多]
代码片段和文件信息
// EnumFormVal.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include “EnumFormVal.h“
#include se.h>
CComModule _Module; // 由于要使用 CComDispatchDriver ATL的智能指针,
// 所以声明它是必须的
#include // 所有 IHTMLxxxx 的接口声明
#include
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
using namespace std;
void EnumIE( void ); //枚举浏览器函数
void Enumframe( IHTMLDocument2 * pIHTMLDocument2 ); //枚举子框架函数
void EnumForm ( IHTMLDocument2 * pIHTMLDocument2 ); //枚举表单函数
int _tmain(int argc TCHAR* argv[] TCHAR* envp[])
{
::CoInitialize(NULL); //初始化 COM 公寓
EnumIE(); //枚举浏览器
::CoUninitialize(); //释放 COM 公寓
cout << _T(“======完成======“) << endl;
getchar(); //等待回车
return 0;
}
void EnumIE( void )
{
cout << _T(“开始扫描系统中正在运行的浏览器实例“) << endl;
CComPtr< IShellWindows > spShellWin;
HRESULT hr = spShellWin.CoCreateInstance( CLSID_ShellWindows );
if ( FAILED ( hr ) )
{
cout << _T(“获取 IShellWindows 接口错误“) << endl;
return;
}
long nCount = 0; // 取得浏览器实例个数(Explorer 和 IExplorer)
spShellWin->get_Count( &nCount );
if( 0 == nCount )
{
cout << _T(“没有在运行着的浏览器“) << endl;
return;
}
for(int i=0; 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;
// 程序运行到此,已经找到了 IHTMLDocument2 的接口指针
// 删除下行语句的注释,把浏览器的背景改变看看
// spDocument2->put_bgColor( CComVariant( “green“ ) );
EnumForm( spDocument2 ); //枚举所有的表单
}
}
void Enumframe( IHTMLDocument2 * pIHTMLDocument2 )
{
if ( !pIHTMLDocument2 ) return;
HRESULT hr;
CComPtr< IHTMLframesCollection2 > spframesCollection2;
pIHTMLDocument2->get_frames( &spframesCollection2 ); //取得框架frame的集合
long nframeCount=0; //取得子框架个数
hr = spframesCollection2->get_length( &nframeCount );
if ( FAILED ( hr ) || 0 == nframeCount ) return;
for(long i=0; iameCount; 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 接口
EnumForm( spDoc2 ); //递归枚举当前子框架 IHTMLDocument2 上的表单form
}
}
void EnumForm( IHTMLDocument2 * pIHTMLDocument2 )
{
if( !pIHTMLDocument2 ) return;
Enumframe( pIHTMLDocument2 ); //
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2005-04-17 18:17 EnumFormVal
文件 248 2005-04-15 10:48 EnumFormVal\EnumFormVal.clw
文件 5394 2005-04-17 02:31 EnumFormVal\EnumFormVal.cpp
文件 4264 2005-04-15 15:49 EnumFormVal\EnumFormVal.dsp
文件 545 2005-04-15 11:41 EnumFormVal\EnumFormVal.dsw
文件 341 2005-04-15 10:48 EnumFormVal\EnumFormVal.h
文件 50176 2005-04-17 02:41 EnumFormVal\EnumFormVal.ncb
文件 180736 2005-04-17 02:41 EnumFormVal\EnumFormVal.opt
文件 1543 2005-04-17 02:35 EnumFormVal\EnumFormVal.plg
文件 1457 2005-04-15 10:48 EnumFormVal\EnumFormVal.rc
文件 1640 2005-04-15 10:48 EnumFormVal\ReadMe.txt
目录 0 2005-04-17 18:17 EnumFormVal\Release
文件 20480 2005-04-17 02:35 EnumFormVal\Release\EnumFormVal.exe
文件 452 2005-04-15 10:48 EnumFormVal\Resource.h
文件 298 2005-04-15 10:48 EnumFormVal\StdAfx.cpp
文件 994 2005-04-17 02:34 EnumFormVal\StdAfx.h
----------- --------- ---------- ----- ----
268786 17
- 上一篇:rtsp源码.txt
- 下一篇:htmlpublisher.hpi
评论
共有 条评论