[急切求助]如何用WebBrowser控件加载页面,然后提交表单?

cplus_2010 2010-11-02 12:55:41
想实现的功能:打开页面,然后输用户名和密码提交表单。

用下面的代码可以把指定的网站加载到控件中,
但是查找表单个数时,返回0,
//nFormCount值为0。。。。。
hr = spElementCollection->get_length( &nFormCount );
弄不清楚什么原因。


// WebBrowseDlg.h : header file
#include "Atlbase.h " //查找Html中控件
#include <mshtml.h> //查找Html中控件

CWebBrowser2 m_ctrlWeb;


// WebBrowseDlg.cpp : implementation file


BOOL CWebBrowseDlg::OnInitDialog()
{
//移动网站
m_ctrlWeb.Navigate("http://221.178.143.198:7001/browser_index.html",NULL,NULL,NULL,NULL);
}

//自动提交表单
void CWebBrowseDlg::PutFormValue(IHTMLDocument2 * pIHTMLDocument2)
{
if(!pIHTMLDocument2)
return;

HRESULT hr;
CComBSTR bstrTitle;

//获取加载页面的标题
pIHTMLDocument2->get_title( &bstrTitle );
USES_CONVERSION;

CComQIPtr<IHTMLElementCollection>spElementCollection;
hr = pIHTMLDocument2->get_forms( &spElementCollection );
if (FAILED(hr))
{
AfxTrace(_T("获取表单的集合 IHTMLElementCollection 错误"));
return;
}

long nFormCount=0;

//nFormCount返回值为 0 ??????
//获取表单数目
hr = spElementCollection->get_length( &nFormCount );
if ( FAILED( hr ) )
{
AfxTrace( _T("获取表单数目错误"));
return;
}
}

//调用
void CWebBrowseDlg::OnOK()
{
//创建IHTMLDocument2类型的对象
CComPtr <IDispatch> spDispDoc;
spDispDoc = m_ctrlWeb.GetDocument();
CComQIPtr<IHTMLDocument2> spDocument2 = spDispDoc;
if (!spDocument2)
return;

PutFormValue(spDocument2);

CDialog::OnOK();
}
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cplus_2010 2010-11-02
  • 打赏
  • 举报
回复
这个网站是移动宽带 验证用户名和密码的 URL。。。
cplus_2010 2010-11-02
  • 打赏
  • 举报
回复
ecton 2010-11-02
  • 打赏
  • 举报
回复
标记学习,最近在登录校内的小外挂,希望晚上能看看
信阳毛尖 2010-11-02
  • 打赏
  • 举报
回复
比如有很多网页是基于frame(iframe)框架结构的,表单form在frame(iframe)框架中,这样的话你必须首先获得frame(iframe)框架的IHTMLDocument2借口,再通过这个接口来获取其中的form表单的IHTMLDocument2接口

你先看看那个网页源代码吧,是什么结构的就可以看出来
信阳毛尖 2010-11-02
  • 打赏
  • 举报
回复
你首先看看这个网页是不是单纯的form结构,如果是的话,可以这样取的其IHTMLDocument2接口,如果不是,就不能这样取了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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