// 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框架表单遍历的更多相关文章

  1. tp框架表单提交注意!不要提交到当前方法

    tp框架  表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.

  2. tp框架表单验证

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  3. Yii 框架表单验证---实例

  4. tp框架表单验证 及ajax

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  5. django-orm框架表单的增删改查

    08.14自我总结 django-orm框架 一.orm基本配置 1.创建django项目 命令行:cmd先去到django创建目录,然后输入django-admin startproject dja ...

  6. 第48天学习打卡(HTML 行内元素和块元素 列表 表格 视频和音频 页面结构分析 iframe内联框架 表单语法 )

    行内元素和块元素 块元素 ​ 无论内容多少,该元素独占一行 ​ (p.h1-h6) 行内元素 ​ 内容撑开宽度,左右都是行内元素的可以排在一行 ​ (a.strong.em...) 列表 什么是列表 ...

  7. ThinkPHP框架表单验证

    对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供 ...

  8. php--yii框架表单验证

    在视图层利用表单小部件生成表单时,field只能是数据库中存在的, 例如: use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\capt ...

  9. laravel框架——表单验证

    创建路由 Route::get('test','VerController@index'); Route::post('tosubmit','VerController@tosubmit'); 在控制 ...

随机推荐

  1. 微信小程序之购物车demo

    这篇小demo主要使用了一下几个技术点 1.全局变量的使用 在这里定义的变量 任何一个页面和组件都可以访问到 在使用到的页面 const app = getApp(); 声明一个实例 然后 app.g ...

  2. oracle函数 LENGTH(c1)

    [功能]返回字符串的长度; [说明]多字节符(汉字.全角符等),按1个字符计算 [参数]C1 字符串 [返回]数值型 [示例] SQL> select length('高乾竞'),length( ...

  3. CDN WAF功能开放公测 提升网络应用安全性能

    阿里云CDN WAF功能,是指CDN融合了云盾Web应用防火墙(Web Application Firewall,简称 WAF)能力,在CDN节点上提供安全防护的功能,该功能目前已经开放公测. WAF ...

  4. Hibernate懒加载导致json数据对象传输异常的问题---(非常重要)

    1. 异常: [console_demo][WARN] [2016-12-15 19:49:35] org.springframework.web.servlet.mvc.support.Defaul ...

  5. PHP实现微信小程序人脸识别刷脸登录功能

    首先我们先确认我们的百度云人脸库里已经上传了我们的个人信息照片 然后我们在后台写刷脸登陆的接口login我们要把拍照获取的照片存储到服务器 public function login(){    // ...

  6. Vue 路由的嵌套使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Python--day42--MySQL外键定义及创建

    什么是外键? 外键的创建:constraint 外键名 foregin key ("表1值1",“ 表1值2”) references 表2的名字(“值1”)

  8. H3C OSPF协议工作过程概述

  9. java List接口中常用类

    Vector:线程安全,但速度慢,已被ArrayList替代. ArrayList:线程不安全,查询速度快. LinkedList:链表结构,增删速度快.取出List集合中元素的方式: get(int ...

  10. python基础十之装饰器

    1,装饰器的形成 编程原则:开放封闭原则. 开放:对扩展是开放的 封闭:对修改是封闭的 因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器! 2,装饰器的定义 # wrapper就是一个装饰 ...