資源簡介
在我們編寫的程序中 如果想要實現對瀏覽器打開的網頁進行監視 模擬操縱 動態提取用戶輸入 動態修改 等功能 那么請你抽出寶貴的時間 繼續往下閱讀 本文介紹的知識和示例程序都是圍繞如何遍歷 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?< getchar(); //等待回車
return?0;
}
void?EnumIE(?void?)
{
cout?<
CComPtr?spShellWin;
HRESULT?hr?=?spShellWin.CoCreateInstance(?CLSID_ShellWindows?);
if?(?FAILED?(?hr?)?)
{
cout?< return;
}
long?nCount?=?0; //?取得瀏覽器實例個數(Explorer?和?IExplorer)
spShellWin->get_Count(?&nCount?);
if(?0?==?nCount?)
{
cout?< return;
}
for(int?i=0;?i {
CComPtr?spDispIE;
hr=spShellWin->Item(CComVariant(?(long)i?)?&spDispIE?);
if?(?FAILED?(?hr?)?) continue;
CComQIPtr?spBrowser?=?spDispIE;
if?(?!spBrowser?) continue;
CComPtr??spDispDoc;
hr?=?spBrowser->get_Document(?&spDispDoc?);
if?(?FAILED?(?hr?)?) continue;
CComQIPtr?spDocument2?=?spDispDoc;
if?(?!spDocument2?) continue;
//?程序運行到此,已經找到了?IHTMLDocument2?的接口指針
//?刪除下行語句的注釋,把瀏覽器的背景改變看看
//?spDocument2->put_bgColor(?CComVariant(?“green“?)?);
EnumForm(?spDocument2?); //枚舉所有的表單
}
}
void?Enumframe(?IHTMLDocument2?*?pIHTMLDocument2?)
{
if?(?!pIHTMLDocument2?) return;
HRESULT?hr;
CComPtramesCollection2?>?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?spWin2?=?vDispWin2.pdispVal;
if(?!spWin2?) continue; //取得子框架的?IHTMLWindow2?接口
CComPtr??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
評論
共有 條評論