首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP.NET > 获取网页中密码和文本框中的内容
【标  题】:获取网页中密码和文本框中的内容
【关键字】:
【来  源】:http://blog.csdn.net/Imain/archive/2006/11/07/1371325.aspx

获取网页中密码和文本框中的内容

 
网页中的密码输入框和一般不同,他没有句柄之类的,但是可以通过IE的IHTMLInputTextElement接口获取!
 
本文是教你如何得到网页中输入框的内容。如何你想获取网页中的密码,则只要把if (lstrcmpi(strtype, _T("TEXT")) == 0) 改成if
 
(lstrcmpi(strtype, _T("PASSWORD")) == 0) 就可以了,如果你要是再加个实时监视的话,就成了密码窃取程序了咯!
 
主要思路:获取IE的IHTMLInputTextElement接口,这样就可以获取网页中的输入框(包括文本和密码输入框)的内容了。

 

 

--------------------------------------------------------------------------------
 
 
 
VARIANT id, index;
CComPtr
<IDispatch> spDispatch;
CComQIPtr
<IHTMLDocument2, &IID_IHTMLDocument2> pDoc2;
CComQIPtr
<IHTMLElement, &IID_IHTMLElement> pElement;
CComPtr
<IHTMLElementCollection> pElementCol;
CComPtr
<IHTMLFormElement> pFormElement;
CComPtr
<IHTMLInputTextElement> pInputElement;
 
//首先获取IWebBrowser2接口
CoInitialize(NULL); //必须要这句初始化
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
if (m_spSHWinds == NULL)
{
if (m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) != S_OK)
{
MessageBox(
"Failed");
CoUninitialize();
 
}

}

 
if (m_spSHWinds)
{
int n = m_spSHWinds->GetCount();
for (int i = 0; i < n; i++)
{
_variant_t v 
= (long)i;
IDispatchPtr spDisp 
= m_spSHWinds->Item(v);
 
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp); 
//生成一个IE窗口的智能指针
if (spBrowser)
{
//获取IHTMLDocument2接口
if (SUCCEEDED(spBrowser->get_Document( &spDispatch)))
pDoc2 
= spDispatch;
if(pDoc2!=NULL)
{
// AfxMessageBox("已经获取IHTMLDocument2");
if (SUCCEEDED(pDoc2->get_forms(&pElementCol)))
{
// AfxMessageBox("已经获取IHTMLElementCollection");
long p=0;
if(SUCCEEDED(pElementCol->get_length(&p)));
if(p!=0)

 
for(long i=0;i<=(p-1);i++)
{
 
V_VT(
&id) = VT_I4;
V_I4(
&id) = i;
V_VT(
&index) = VT_I4;
V_I4(
&index) = 0;
 
if(SUCCEEDED(pElementCol->item(id,index, &spDispatch)))
 
 
if(SUCCEEDED(spDispatch->QueryInterface(IID_IHTMLFormElement,(void**)&pFormElement)))
{
// AfxMessageBox("已经获取IHTMLFormElement");
long q=0;
if(SUCCEEDED(pFormElement->get_length(&q)));
for(long j=0;j<=(q-1);j++)
{
V_VT(
&id) = VT_I4;
V_I4(
&id) = j;
V_VT(
&index) = VT_I4;
V_I4(
&index) = 0;
if(SUCCEEDED(pFormElement->item(id,index, &spDispatch)))
 
 
 
if(SUCCEEDED(spDispatch->QueryInterface(IID_IHTMLInputTextElement,(void**)&pInputElement)))
{
//AfxMessageBox("已经获取IHTMLInputTextElement");
CComBSTR value;
CComBSTR type;
pInputElement
->get_type(&type);//获取输入框类型(密码框还是文本框)
 
CString strtype(type);
strtype.MakeUpper();
if (lstrcmpi(strtype, _T("TEXT")) == 0
{
pInputElement
->get_value(&value);//获取文本框的值
CString strvalue(value);
AfxMessageBox(strvalue);
}

}

}

}

}

}

 
}

 
 
一个很能糊弄人的javascript的面试题:【上一篇】
输入输出流:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 新浪UC2005II登场 娱乐对对碰随机找聊友
  • TCP/IP基础笔记(1)
  • Longhorn 概念录象:远程通讯
  • Foxmail的一处不足
  • 测试是否鸡蛋里挑骨头?
  • oracle将users表空间的dmp文件导入到指定的表空间去?
  • 超频初级知识贴
  • 算法设计方法 - 递归
  • 让词霸2005也能通过“运行”打开
  • C++程序员常备工具
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.