我用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);
}}
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);
}}
还有就是,你不要使用 Sleep,你应该在 CDHtmlDialog的OnDocumentComplete或者OnNavigateComplete得到网页加载完的消息后再进行查找
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都返回说没有这个接口
}