如何获取网页中的密码和文本输入框的内容
来源:互联网 发布:下载b612软件下载 编辑:程序博客网 时间:2024/05/16 06:02
一、介绍
网页中的密码输入框和一般不同,它没有句柄之类的,但是通过获取IE的IHTMLInputTextElement接口,就可以获取网页中的输入框(包括文本和密码输入框)的内容了。
源代码在VC知识库首页运行效果图如下:
二、具体代码
VARIANT id, index;CComPtr<IDispatch> spDispatch;CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pDoc2;CComPtr<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(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(" 【应该是密码】"));}}}}}}}}}} }注意:由于我也比较懒,本文框架是采用一篇名为《如何控制IE的行为》...在这里感谢原文作者,但是本文的主要代码是我写的,(其实自己写一个框架也太简单了,但是我还要上班啊 :( 请原谅!)最好不要向作者要技术支持!谢谢阅读!
转载: http://www.vckbase.com/document/viewdoc/?id=621
- 获取网页中的密码和文本输入框的内容
- 如何获取网页中的密码和文本输入框的内容
- 如何获取网页密码框中的密码
- 如何获取网页密码框中的密码
- 如何获取网页密码框中的密码
- 如何获取网页密码框中的密码
- 如何获取网页密码框中的密码
- Android Webview获取网页标题和文本内容
- 得到一个网页的内容(命令方式和文本方式)
- 获取JTextarea指定行的行数和文本内容
- UIWebView中获取网页输入框的内容
- UIWebView中获取网页输入的内容
- UIWebView中获取网页输入的内容
- jquery修改输入框和文本域的placeholder
- 获取网页中密码和文本框中的内容
- 获取网页中密码和文本框中的内容
- Android中如何解析网页,获取网页中的元素内容
- 关联网页可信度分析和文本内容(IEEE2014)
- SPI协议分析
- 深入理解JavaScript的闭包特性 如何给循环中的对象添加事件
- Linux编程获取文件属性
- c# 获取相对路径
- js产生随机数
- 如何获取网页中的密码和文本输入框的内容
- mysql更改用户密码
- linux压缩和解压缩命令大全
- [iOS]通过UIView对象获取该对象所属的UIViewController
- Amoeba+mysql实现读写分离
- 不要逼员工威胁辞职
- Socket I/O模型之重叠I/O(overlapped I/O)
- Apache2.2.4 + tomcat6负载均衡设置
- 不怕神一样的对手,就怕猪一样的队员