各位大虾,我的问题如下:
1、我使用WebBrowser 控件可以实现网页的浏览了,不过在执行的时候网页浏览的请求和响应以及网页的显示都是由WebBrowser 控件自行完成的。现在我需要将服务器回传的网页接收出来,同时解析其中的某些属性。同时如果回传的网页中有帐户设置要求,比如:网页要求输入用户名和密码,我现在要实现的是将用户名和密码通过程序填入(不通过页面的手动操作),最后将填好的页面发送。请问实现上述功能应该怎么弄?WebBrowser 控件可不可以实现上述功能?如果不行,可以使用其它的什么控件或是类实现?我使用的是VS2005进行桌面开发。
非常感谢!

解决方案 »

  1.   

    你能控制DOM,就没有什么不能实现的。
      

  2.   

    大虾,您所的DOM是什么意思,能不能具体点,非常感谢!
      

  3.   

    文档对象模型。网页脚本对网页的控制就是对DOM的操作。
      

  4.   

    通过浏览器控件获得页面的IHTMLDocument2接口,从此你就进入了DOM世界,整个DOM架构就是从IHTMLDocument2开始展开的。
      

  5.   

    DOM应用---遍历网页中的元素
    http://www.vckbase.com/document/viewdoc/?id=1446
      

  6.   

    vc++得到网页中密码框中的密码的源码下载(http://icode.csdn.net/source/1192298)
    这个例子是用DOM操作的,同理,你能得到密码,就能填写密码,原理是一样的。好好看一下代码,原理应该不难。要相信自己。我还有直接发送登录信息的(就是自己传送已知的帐号及密码到指定登录页面,页面不用你填写,程序自动登录),这个不用使用DOM,你看一下:
         VARIANT vInfo;
        vInfo.vt=VT_EMPTY;
        m_browser.Navigate("http://IP或网址/Login.jsp?userid=H9999&password=yourpassword",&vInfo,&vInfo,&vInfo,&vInfo);//说明m_browser是你窗口上WEB_BROWSER控件所关联的一个全局变量(不一定要全局,能访问到就行)
    //我这个例子是使用userid和password来登录的,你要查看你的登录网页里这二项的命名,一般叫username和password
    //你要指定详细的页面,例如有些网址虽然在首页就显示了登录框,例如 www.163.com,但其它他使用了默认页面,可能是www.163.com/index.asp或者其它的,你要指定这个明细的页面地址,而不能使用www.163.com这是不行的。登录方式要看一下对方的代码,目前,我可以转换asp,jsp,aspx,javacript的所以登录,都成功的。你试一下吧。不难。
      

  7.   

    各位我想问问:
    IHTMLDocument2 *pHTMLDocument=NULL; 
    IPersistStreamInit *pPSI=NULL;  IStream *pStream=NULL; 
    HGLOBAL hHTMLText;  if (!(pHTMLDocument = (IHTMLDocument2*)m_wndBrowser.get_Document())) //获取Document
    return;  if (FAILED(pHTMLDocument->QueryInterface(&pPSI))) //获取IPersistStreamInit 指针

    // pHTMLDocument->Release(); 
    return;
    }  hHTMLText = GlobalAlloc(GMEM_FIXED, 10000);//分配内存
    memset((char*)hHTMLText,NULL,10000);//初始化清空
    CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);//将内存与流绑定 
    pPSI->Save(pStream, FALSE);我使用上述代码,可以将网页保存在hHTMLText中,不过我想问问如何通过IHTMLDocument2 获取网页的大小,因为GlobalAlloc函数我使用的是一个定值,如果可以基于网页大小分配就比较好了!
      

  8.   

    我最近也是同样的问题可以得到文本, 但是 VBScript 这样的脚本  还不会处理那样就是写BHO了, 
      

  9.   

    可以的,先:hr=pHTML->get_outerHTML();但这样就直接取得了源码了,你上面的方法也就用不上了。这是另一种取得的方法,步骤较多,还有一种方法是下载HTML文件到本地后读文件取得大小,都不好用,还是建议直接将空间取个大一点的值,因为图片什么的都不计算入内的,只计文本代码的,所以最长最多,也不可能大于1M吧?你就定个1M空间出来,绝对不会这么烂的网页连HTML都达到1M的。也就是取值:1000000L