MFC实现自动填写表单与自动提交表单
2012-10-30 15:43
344 查看
自动填写表单和自动提交表单可以利用在网页里自动注册,自动发帖,还可以让程序跟网页互动,这功能的使用还是比较广泛的,我说一下我一般用的自动填表跟自动提交表单的一些技巧,这些技巧,你可以结合一些扩展思维来做更多的事情,自动填写表单关键找到变量的name(搜索maxLength之后,就很容易找到变量的name),提交表单关键找到form的submitname和form的name。
1.新建一个Dlg对话框MFC程序
2.在对话框里面拉如一个WebBrowser控件ID改为IDC_EXPLORER,为其关联控件变量,变量名为m_web。
3.增加3个按钮,一个为“提交表单”,ID修改为IDC_SUBMIT,一个为”自动填写“按钮ID修改为IDC_AUTO,另外一个为“打开网页”按钮ID修改为IDC_OPEN,同时为3个按钮添加消息响应
4.增加2个编辑框2个静态文本,他们组成“帐号”和“密码”两组,为帐号的编辑框修改ID为,IDC_USERNAME,关联CString变量为m_username,为密码编辑框修改ID为:IDC_PASSWORD,关联CString变量为m_password,再增加一个编辑框ID为:IDC_URL,关联CString变量为m_url,这个跟打开配成一组用做打开网页(也可以在Dlg类的初始化函数里面直接做打开指定网页)
5.在dlg的opp文件(实现文件)的头部包含头文件
1.新建一个Dlg对话框MFC程序
2.在对话框里面拉如一个WebBrowser控件ID改为IDC_EXPLORER,为其关联控件变量,变量名为m_web。
3.增加3个按钮,一个为“提交表单”,ID修改为IDC_SUBMIT,一个为”自动填写“按钮ID修改为IDC_AUTO,另外一个为“打开网页”按钮ID修改为IDC_OPEN,同时为3个按钮添加消息响应
4.增加2个编辑框2个静态文本,他们组成“帐号”和“密码”两组,为帐号的编辑框修改ID为,IDC_USERNAME,关联CString变量为m_username,为密码编辑框修改ID为:IDC_PASSWORD,关联CString变量为m_password,再增加一个编辑框ID为:IDC_URL,关联CString变量为m_url,这个跟打开配成一组用做打开网页(也可以在Dlg类的初始化函数里面直接做打开指定网页)
5.在dlg的opp文件(实现文件)的头部包含头文件
#include <MsHTML.h>6.在“打开网站”按钮的消息响应中添加如下代码:
CComVariant vtUrl(m_url); CComVariant vtEmpty; m_web.Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty);//打开指定的网页7.在“自动填写”按钮的详细响应中添加如下代码:
CComPtr < IDispatch > spDispDoc; spDispDoc = m_web.get_Document(); CComQIPtr< IHTMLDocument2 > spDocument2 = spDispDoc; CComQIPtr< IHTMLElementCollection > spElementCollection; if(SUCCEEDED(spDocument2->get_all(&spElementCollection))) { CComPtr<IDispatch> spDisp1, spDisp2; HRESULT hr1, hr2; hr1 = spElementCollection->item(CComVariant("u"), CComVariant("0"), &spDisp1); hr2 = spElementCollection->item(CComVariant("p"), CComVariant("0"), &spDisp2); if(SUCCEEDED(hr1))//||SUCCEEDED(hr2)||SUCCEEDED(hr3)) { CComQIPtr<IHTMLInputElement> spElem1 = spDisp1; CComQIPtr<IHTMLInputElement> spElem2 = spDisp2; spElem1->put_value(CComBSTR(username));spElem2->put_value(CComBSTR(password));}}8.在“提交表单”按钮的消息响应中添加如下代码:
CComPtr < IDispatch > spDispDoc; spDispDoc = m_web.get_Document(); CComQIPtr< IHTMLDocument2 > spDocument2 = spDispDoc; CComQIPtr< IHTMLElementCollection > spElementCollection; if(SUCCEEDED(spDocument2->get_all(&spElementCollection))) { CComPtr<IDispatch> spDisp; HRESULT hr; hr = spElementCollection->item(CComVariant("submit"), CComVariant("0"), &spDisp); if(SUCCEEDED(hr)) { CComQIPtr<IHTMLFormElement> spForm = spDisp; spForm->submit(); } }在网页输入里输入网页www.baidu.com然后点击“打开按钮”,接着在编辑框里面输入一下帐号密码,点一下自动填写,再点一下“提交表单”是不是看到浏览器里面的数据自动输入提交表单了呢?这时候大家可以扩展一下,把自动填写的处理放到提交表单里面去处理,然后在dlg类的初始化函数里面设置一下打开网站的操作,这时候一打开软件就打开了指定的网页,然后输入帐号密码,点提交,浏览器里面的数据自动输入提交表单登录,这时候再根据新的网页进行一些操作就可以实现自动发帖了,这时候操作做完之后再做一些无法打开网页的错误处理跟抛出异常,把web控件设为不可见,看起来就象是软件直接跟网站的数据库直接打交道了,其他的一些技巧实现起来差不多这里给了思路,大家自己去琢磨。
相关文章推荐
- MFC实现自动填写表单与自动提交表单
- C#实现网页表单自动提交(126邮箱登录例程)
- 使用WebClient自动填写并提交ASP.NET页面表单的源代码
- [转载]WebBrowser控件表单(form)的自动填写和提交
- 使用WebClient自动填写并提交ASP.NET页面表单
- 在ASP.NET登录页面中如何实现文本框焦点自动跳转及通过回车键提交表单
- vc遍历网页表单并自动填写提交
- WebBrowser控件表单(form)的自动填写和提交
- 使用WebClient自动填写并提交ASP.NET页面表单的源代码
- C#实现网页表单自动提交
- 使用WebClient自动填写并提交ASP.NET页面表单
- 利用JS实现表单的自动提交
- 使用VB实现邮箱自动注册(一):表单自动提交
- C#实现网页表单自动提交
- 使用WebClient自动填写并提交ASP.NET页面表单 (zt)
- 让一个网页打开的同时自动为另一个网页自动填写表单并提交
- 仅一个form表单 js实现注册信息依次填写提交功能
- Delphi实现网页表单数据的自动提交
- 利用WebClient实现自动添写、提交表单
- javascript文本框回车自动提交表单功能实现