// 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. CF1238E.Keyboard Purchase 题解 状压/子集划分DP

    作者:zifeiy 标签:状压DP,子集划分DP 题目链接:https://codeforces.com/contest/1238/problem/E 题目大意: 给你一个长度为 \(n(n \le ...

  2. console.log详细介绍

    console.log详细介绍 效果图: 代码如下: console.log("%c hello world!:http://www.baidu.com","color: ...

  3. SuperSocket从服务器端主动发起连接

    你可以从服务器端主动连接客户端, 连接建立之后的网络通信处理将和客户端主动建立连接的处理方式一样. var activeConnector = appServer as IActiveConnecto ...

  4. Python--day25--复习(单继承和多继承的总结)

  5. C# 16 进制字符串转 int

    最近在写硬件,发现有一些测试是做 16 进制的字符串,需要把他转换为整形才可以处理. 本文告诉大家如何从 16 进制转整形 如果输入的是 0xaa 这时转换 int 不能使用 Parse 不然会出现异 ...

  6. git checkout简介

    原文: http://web.mit.edu/~thefred/MacData/afs/sipb/project/git/git-doc/git-checkout.html  git checkout ...

  7. 备战省赛组队训练赛第十六场(UPC)

    传送门 题解: by 烟台大学 (提取码:8972)

  8. H3C网络监测工具命令

    1.Debugging 2.Display debugging 3.Display diagnostic-information display diagnostic-information 命令用来 ...

  9. 【t088】倒水

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 一天辰辰买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着辰辰发现瓶子实在太多了,于是 ...

  10. D3.js力导向图(适用于其他类型图)中后添加元素遮盖已有元素的问题解决

    上一篇说了在D3.js中动态增加节点及连线的一种实现方式,但是有后添加元素遮盖原节点的现象,这一篇说一下出现这个现象的解决办法. 在D3.js中后添加的元素是会遮盖先添加的元素的,同时还有一个设定:后 ...