如何用MFC操作网页?

h230907895509 2013-12-02 09:41:17
我用WebBrowser控件显示了网页,但是我想要浏览的网页需要输入账号密码才能进入。
请问怎么操作可以把我的账号密码当做参数跳过登陆界面直接显示登陆后的页面呢?
...全文
1363 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
encoderlee 2013-12-13
  • 打赏
  • 举报
回复
引用 14 楼 GLSC_CENA 的回复:
spElement.Release();是不是应该用指针
我这里使用了智能指针,所以调用spElement.Release();来释放资源。.Release()是智能指针类CComPtr的方法。 如果你不使用智能指针,而是使用COM原始指针的话: IHTMLElement &pElement; 才这样调用Release(): pElement->Release();
这个娜戒海了 2013-12-13
  • 打赏
  • 举报
回复
引用 7 楼 CharlesSimonyi 的回复:
http://passport.5211game.com/11/t/login.aspx 模拟登陆这个网站的例子

	CComQIPtr<IHTMLDocument3> spDocument = m_IE.get_Document();
	CComQIPtr<IHTMLInputElement> spInputElement;
	CComPtr<IHTMLElement> spElement;
	//填写账号
	spDocument->getElementById(L"txtUser", &spElement);
	spInputElement = spElement;
	spInputElement->put_value(L"admin");
	spElement.Release();
	//填写密码
	spDocument->getElementById(L"txtPassWord", &spElement);
	spInputElement = spElement;
	spInputElement->put_value(L"123456");
	spElement.Release();
	//点击登录按钮
	spDocument->getElementById(L"butLogin", &spElement);
	spElement->click();
写在一个按钮响应函数里,等页面加载完成后,点这个按钮试一下。如果程序崩溃了,调试下看看,哪一步出现空指针。
spElement.Release();是不是应该用指针
蚊子嗷嗷 2013-12-13
  • 打赏
  • 举报
回复
这个娜戒海了 2013-12-13
  • 打赏
  • 举报
回复
引用 15 楼 CharlesSimonyi 的回复:
[quote=引用 14 楼 GLSC_CENA 的回复:] spElement.Release();是不是应该用指针
我这里使用了智能指针,所以调用spElement.Release();来释放资源。.Release()是智能指针类CComPtr的方法。 如果你不使用智能指针,而是使用COM原始指针的话: IHTMLElement &pElement; 才这样调用Release(): pElement->Release();[/quote] 嗯,的确是这样
brk1985 2013-12-11
  • 打赏
  • 举报
回复
学习了,mark下。。。
思考一下 2013-12-11
  • 打赏
  • 举报
回复
楼上大神啊~
encoderlee 2013-12-03
  • 打赏
  • 举报
回复
注意还要#include <MsHTML.h>
cfanandhacker2 2013-12-03
  • 打赏
  • 举报
回复
就是这样,同意楼上
encoderlee 2013-12-03
  • 打赏
  • 举报
回复
encoderlee 2013-12-03
  • 打赏
  • 举报
回复
encoderlee 2013-12-03
  • 打赏
  • 举报
回复
http://passport.5211game.com/11/t/login.aspx 模拟登陆这个网站的例子

	CComQIPtr<IHTMLDocument3> spDocument = m_IE.get_Document();
	CComQIPtr<IHTMLInputElement> spInputElement;
	CComPtr<IHTMLElement> spElement;
	//填写账号
	spDocument->getElementById(L"txtUser", &spElement);
	spInputElement = spElement;
	spInputElement->put_value(L"admin");
	spElement.Release();
	//填写密码
	spDocument->getElementById(L"txtPassWord", &spElement);
	spInputElement = spElement;
	spInputElement->put_value(L"123456");
	spElement.Release();
	//点击登录按钮
	spDocument->getElementById(L"butLogin", &spElement);
	spElement->click();
写在一个按钮响应函数里,等页面加载完成后,点这个按钮试一下。如果程序崩溃了,调试下看看,哪一步出现空指针。
h230907895509 2013-12-03
  • 打赏
  • 举报
回复
引用 4 楼 hdt 的回复:
根据 webbrowser 获得IHtmlDocument 接口,再通过这个接口调用getElemnetById 等方法获取具体的html元素。
版主,遍历IHtmlDocument 接口的方法能不能给个具体代码呢,百度了一下都好复杂~
h230907895509 2013-12-03
  • 打赏
  • 举报
回复
引用 2 楼 CharlesSimonyi 的回复:
模拟填写账号密码框,然后模拟点击登录按钮。 你可以调用IWebBrowser2::get_Document获取当前文档的指针,然后QueryInterface得到IHTMLDocument2等指针,遍历或通过ID得到账号、密码输入框元素的指针IHTMLInputElement,然后调用IHTMLInputElement::put_value填写账号或密码。得到登录按钮元素的指针,调用IHTMLElement::click进行点击。 这些都是MSHTML的范畴,这里是MSDN上的文档http://msdn.microsoft.com/en-us/library/hh801967(v=vs.85).aspx
小弟初学者,能不能具体给个代码呢~ 比如我想要登录这个URL"http://passport.5211game.com/11/t/login.aspx" 账号:admin 密码:123456 想要模拟的操作是“点击登陆按钮”。 我使用的是MFC的ActiveX控件显示网页,控件关联的CWebBrowser2变量m_IE。 先谢谢啦!
真相重于对错 2013-12-02
  • 打赏
  • 举报
回复
根据 webbrowser 获得IHtmlDocument 接口,再通过这个接口调用getElemnetById 等方法获取具体的html元素。
oyljerry 2013-12-02
  • 打赏
  • 举报
回复
webbrowser可以插入javascript来填入账号信息,并提交
encoderlee 2013-12-02
  • 打赏
  • 举报
回复
模拟填写账号密码框,然后模拟点击登录按钮。 你可以调用IWebBrowser2::get_Document获取当前文档的指针,然后QueryInterface得到IHTMLDocument2等指针,遍历或通过ID得到账号、密码输入框元素的指针IHTMLInputElement,然后调用IHTMLInputElement::put_value填写账号或密码。得到登录按钮元素的指针,调用IHTMLElement::click进行点击。 这些都是MSHTML的范畴,这里是MSDN上的文档http://msdn.microsoft.com/en-us/library/hh801967(v=vs.85).aspx

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧