IE框架表单遍历
// HtmlWeb.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <atlbase.h>
#include <MsHTML.h>
#include <oleacc.h>
#pragma comment(lib,"oleacc.lib")
int main()
{
BSTR sztitle;
long lFramesLength = ;
HWND hwnd = (HWND);
HRESULT hr = ::CoInitialize(NULL);
UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
LRESULT result;
SendMessageTimeout(hwnd, nMsg, 0l, 0l, SMTO_ABORTIFHUNG, , (PDWORD)&result);
CComPtr <IHTMLDocument2> spDoc;
hr = ::ObjectFromLresult(result, IID_IHTMLDocument2, , (LPVOID *)&spDoc);
if (SUCCEEDED(hr))
{
CComPtr<IHTMLFramesCollection2> frames;
CComPtr<IHTMLElementCollection> ElementCoole;
spDoc->get_URL(&sztitle);
wprintf_s(L"title:%s\r\n", sztitle);
spDoc->get_cookie(&sztitle);
wprintf_s(L"title:%s\r\n", sztitle);
hr = spDoc->get_forms(&ElementCoole);
if (SUCCEEDED(hr))
{
hr = ElementCoole->get_length(&lFramesLength);
if (SUCCEEDED(hr))
{
VARIANT varIndex, varResult;
VariantInit(&varIndex);
VariantInit(&varResult);
varResult.vt = VT_I4;
varResult.vt = VT_I4;
IDispatch *pDispatch;
for (long i =;i<lFramesLength;i++)
{
varIndex.lVal = i;
if (ElementCoole->item(varIndex, varResult, &pDispatch) == S_OK)
{
CComQIPtr<IHTMLFormElement> spFormElement = pDispatch;
pDispatch->Release();
spFormElement->get_name(&sztitle);
wprintf_s(L"title:%s\r\n", sztitle);
IDispatch* spInputElement;
hr = spFormElement->get_length(&lFramesLength);
if (SUCCEEDED(hr))
{
for (long k=;k<lFramesLength;k++)
{
if (spFormElement->item(CComVariant(k), CComVariant(), &spInputElement) == S_OK)
{
CComQIPtr<IHTMLInputElement> spInputEle = spInputElement;
spInputElement->Release();
BSTR vName, vVal, vType; //取得表单域的 名,值,类型
hr = spInputEle->get_name(&vName);
if (FAILED(hr))
continue;
hr = spInputEle->get_type(&vType);
if (FAILED(hr))
continue;
hr = spInputEle->get_value(&vVal);
if (FAILED(hr))
continue;
wprintf_s(L"name:%s \t value:%s \t type:%s \r\n", vName,vVal,vType);
}
}
}
}
}
}
}
#if 0
hr = spDoc->get_frames(&frames);
if (SUCCEEDED(hr))
{
VARIANT varIndex, varResult;
VariantInit(&varIndex);
VariantInit(&varResult);
varIndex.vt = VT_I4;
varResult.vt = VT_DISPATCH;
IDispatch *pDispatch;
hr = frames->get_length(&lFramesLength);
if (SUCCEEDED(hr))
{
for (long i = ; i < lFramesLength; i++)
{
varIndex.lVal = i;
hr = frames->item(&varIndex, &varResult);
if (SUCCEEDED(hr))
{
pDispatch = varResult.pdispVal;
}
}
} }
#endif
}
::CoUninitialize();
return ;
}

IE框架表单遍历的更多相关文章
- tp框架表单提交注意!不要提交到当前方法
tp框架 表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.
- tp框架表单验证
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- Yii 框架表单验证---实例
- tp框架表单验证 及ajax
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- django-orm框架表单的增删改查
08.14自我总结 django-orm框架 一.orm基本配置 1.创建django项目 命令行:cmd先去到django创建目录,然后输入django-admin startproject dja ...
- 第48天学习打卡(HTML 行内元素和块元素 列表 表格 视频和音频 页面结构分析 iframe内联框架 表单语法 )
行内元素和块元素 块元素 无论内容多少,该元素独占一行 (p.h1-h6) 行内元素 内容撑开宽度,左右都是行内元素的可以排在一行 (a.strong.em...) 列表 什么是列表 ...
- ThinkPHP框架表单验证
对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供 ...
- php--yii框架表单验证
在视图层利用表单小部件生成表单时,field只能是数据库中存在的, 例如: use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\capt ...
- laravel框架——表单验证
创建路由 Route::get('test','VerController@index'); Route::post('tosubmit','VerController@tosubmit'); 在控制 ...
随机推荐
- css3制作动画性能问题
这篇文章主要讲的是怎样制作流畅动画,特别是针对移动端.在这里我首先介绍制作动画的几种方法的优缺点:接着会着重介绍用css3制作动画的注意事项. 1.用canvas.css3.jquery制作动画 Ca ...
- Android 高仿新浪微博底部导航栏,实现双击首页Tab,页面的ListView滚动、刷新
现在很多APP,如微信.QQ.微博等等,它们的主页面都无一例外的选择使用底部Tab导航, 通过这种方式,可以很好的把页面层级分化,很好的提高用户体验.相信,很多Android开发者,都使用到过这种经典 ...
- shell awk杂项
awk '{ ;++i<=NF;){ a[i]=a[i]?a[i]",'\''"$i"'\''":"'\''"$i"'\'' ...
- laravel 实现微博第三方登陆
https://blog.csdn.net/a12541254/article/details/79415550 1.安装 composer require socialiteproviders/we ...
- Oracle ltrim() 函数用法
Oracle ltrim() 函数用法 2015-03-21 20:42:40 Je_WangZhe 阅读数 8834更多 分类专栏: Oracle 版权声明:本文为博主原创文章,遵循CC 4.0 ...
- H3C 无线网络典型部署-热点覆盖
- php中 instanceof有什么作用
php中 instanceof有什么作用 作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口.
- iptables [match] 常用封包匹配参数
参数 -p, --protocol 范例 iptables -A INPUT -p tcp 说明 匹配通讯协议类型是否相符,可以使用 ! 运算符进行反向匹配,例如: -p !tcp 意思是指除 tcp ...
- UA判断打开页面的环境,然后在callBack写相应环境下的回调函数
这是js代码 /* * 2016.11.10 * SunJingxin * V 1.0.0 * */ (function(){ /* * 使用方法: * 一.引入ua.js * 二.直接调用 Mobi ...
- Python--day30--网络基础
单波: 查找mac: