我用CDHtmlDialog的以下代码访问网页,然后想取得一个页面元素,但无论如何都取不到,请高人指点迷津:
void myfun()
{m_HtmlDlg.Navigate("http://www.163.com",navNoReadFromCache|navNoWriteToCache);
Sleep(1000*3600);//等待装载完毕,此处设为了1个小时,但都得不到网页元素!
while(1)
{
hr=m_HtmlDlg.GetElement("code_img",&pObj);//此处无论如何hr都返回说没有这个接口
if(SUCCEEDED(hr)) break;
Sleep(1000);
}}

解决方案 »

  1.   

    。。你怎么不用CInternetSession,CHttpFile来得到网页元素了。。
    还有就是,你不要使用 Sleep,你应该在 CDHtmlDialog的OnDocumentComplete或者OnNavigateComplete得到网页加载完的消息后再进行查找
      

  2.   

    在OnDocumentComplete中获取,IHtmlElement
      

  3.   

    m_HtmlDlg.Navigate("http://www.163.com",navNoReadFromCache|navNoWriteToCache);
    Sleep(1000*3600);
    有问题啊,当Navigate时,webbrowser会去加载网页,这个时候你Sleep(1000*3600);睡了1个小时,就相当于让他停止加载网页了。举个例子:你想写1000字的文章(获取网页http://www.163.com),刚一写文章(刚刚调用Navigate),你就睡了1个小时,当你醒来后,去看文章写好没有,当然是没有写好。
    //当网页加载完毕时,触发这个函数
    void XXXDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
    {
      hr=m_HtmlDlg.GetElement("code_img",&pObj);//此处无论如何hr都返回说没有这个接口
    }