MFC实现自动填写表单与自动提交表单

自动填写表单和自动提交表单可以利用在网页里自动注册,自动发帖,还可以让程序跟网页互动,这功能的使用还是比较广泛的,我说一下我一般用的自动填表跟自动提交表单的一些技巧,这些技巧,你可以结合一些扩展思维来做更多的事情,自动填写表单关键找到变量的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. #include <MsHTML.h>  
#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控件设为不可见,看起来就象是软件直接跟网站的数据库直接打交道了,其他的一些技巧实现起来差不多这里给了思路,大家自己去琢磨。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值