签到

05月05日
尚未签到

共有回帖数 1

    人心难测

    等级:
    一、介绍网页中的密码输入框和一般不同,它没有句柄之类的,但是通过获取IE的IHTMLInputTextElement接口,就可以获取网页中的输入框(包括文本和密码输入框)的内容了。源代码在VC知识库首页运行效果图如下:

    二、具体代码



    注意:由于我也比较懒,本文框架是采用一篇名为《如何控制IE的行为》...在这里感谢原文作者,但是本文的主要代码是我写的,(其实自己写一个框架也太简单了,但是我还要上班啊 :( 请原谅!)最好不要向作者要技术支持!谢谢阅读!
    gth(&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); //获取输入框类型(密码框还是文本框)

    楼主 2016-07-28 11:22 回复

    人心难测

    等级:
               CString strtype(type);
                                  strtype.MakeUpper();
                                  if(strtype.Find("TEXT")!=-1) //获取文本框的值
                                  {
                                    pInputElement-get_value(&value);
                                    CString str(value);
                                    if(!str.IsEmpty())
                                      m_ctrlIE.InsertItem(0, _bstr_t(value)+_bstr_t(" 【可能是用户名或其他需提交的内容】"));

                                  }
                                  else if(strtype.Find("PASSWORD")!=-1) //获取密码框的值
                                  {
                                    pInputElement-get_value(&value);
                                    CString str(value);
                                    if(!str.IsEmpty())
                                      m_ctrlIE.InsertItem(0, _bstr_t(value) + _bstr_t(" 【应该是密码】"));
                                  }
                                }
                            }
                        }
                    }
                  }
              }

            }

          }

        }
      }

    1楼 2016-07-28 11:22 回复

共有回帖数 1
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知