本帖最后由 andy41020955 于 2014-05-24 21:38:38 编辑

解决方案 »

  1.   

    getElementById应该是可以的,这个页面网址是多少?贴出来我们帮你看一下
      

  2.   


    网址:
    http://fast.1000.com/
    帐号密码:
    test1000    test1000
    在此谢谢了 
      

  3.   

    这个<input>文本框是在一个id为mainframe的iframe框架内的,你之前获得的IHTMLDocument3是整个页面的文档指针,但不包括iframe框架内的文档。
    所以得先获取这个iframe元素,再获取其内部文档的IHTMLDocument3指针,然后再getElementById获取input元素。
    CComQIPtr<IHTMLDocument3> spDoc = GetHtmlDocument();
    CComPtr<IHTMLElement> spElem;
    CComQIPtr<IHTMLIFrameElement3> spIfeameElem;
    CComQIPtr<IHTMLInputElement> spInputElem;
    CComDispatchDriver spDispatch;
    CComBSTR bstrValue;
    spDoc->getElementById(CComBSTR(L"mainframe"), &spElem);
    spDoc.Release();
    spIfeameElem = spElem;
    spElem.Release();
    spIfeameElem->get_contentDocument(&spDispatch);
    spDoc = spDispatch;
    spDoc->getElementById(CComBSTR(L"mobileNo"), &spElem);
    spInputElem = spElem;
    spInputElem->get_value(&bstrValue);
    MessageBox(bstrValue);
      

  4.   

    谢谢关注这个问题。很高兴这个问题能解决了。但是你说的这个 iframe 是在哪边看到的啊?我在网页上右键,查看源文件,好像没有这个iframe  的元素啊 , 是不是还有其它的方法来查看源代码的 ?
      

  5.   

    在Chrome浏览器里右键-审查元素就可以找到了,这个看到的是当前已经加载完整的DOM树。
    IE右键-查看源码,要看你在哪里点右键,要在框架外部的区域点才行,你在框架内部点,得到的就是框架内的源码,并且看到的内容不包括AJAX异步加载的内容。
      

  6.   

    哦,谢谢
    我试了下,好像是在不同的区域点查看源代码看到的源码不同,这个以前没注意过。
    另外再问下,我用的VS2010,貌似没有 IHTMLIFrameElement3 ,只有IHTMLIFrameElement我按你这个思路再试试。
      

  7.   

    我的也是VS2010,有 IHTMLIFrameElement3
    如果你的真没有的话,可能是我打过VS2010的SP1补丁才有的。
    但获取框架内文档指针也不一定要用 IHTMLIFrameElement3,还有其他方法,百度一下