如何用BHO取得IE的HTML源码? 已经搞定不过能否在IE的DownloadComplete事件中得到HTML源码?我是在DOCUMENTCOMPLETE事件中得到HTML源的.难道没有高手吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ipxspx,如何取到的,教我一教 你取到的原码和"View Source"的不一样吧? 问题:: 怎么得到 iframe 或者 frame的 IHTMLDocument2对象指针看看这个! MSDN上不是有详细的例子吗?就是那个关于BHOs的 综合参考msdn及有关书籍,并无数次试验//响应DOCUMENTCOMPLETE:事件HRESULT GetDHtmlObject(IDispatch *lpTopDisp){ HRESULT hr ; CComPtr<IDispatch> pDisp; LPDISPATCH lpWBDisp; //m_spWebBrowser2为IE的指针 if (m_spWebBrowser2) { //取得IE的文档指针 hr = m_spWebBrowser2->QueryInterface(IID_IDispatch, (void**)&lpWBDisp); //将下载的文档指针同IE的文档指针比较,如果不同可能是下载的frame或图片 if (lpWBDisp!=lpTopDisp) { //退出 return S_OK; } //取得Document对象 hr=m_spWebBrowser2->get_Document(&pDisp); if (hr==S_OK) { //是HTML对象 spHTML = pDisp; BSTR bstrHTML; CString strHtml; IHTMLElement *pBody; //取文档的URL hr=spHTML->get_URL(&bstrHTML); if (hr==S_OK) { strHtml=bstrHTML; //AfxMessageBox(strHtml); } //检验是不是http协议 if(strHtml.Left(7)=="http://" ) { strmsg=strHtml+ "\r\n"; //取文档title hr=spHTML->get_title(&bstrHTML); if (S_OK==hr) { strHtml=bstrHTML; strmsg+=strHtml; SysFreeString(bstrHTML); //AfxMessageBox(strHtml); } //取文档body hr=spHTML->get_body(&pBody); if (S_OK==hr) { pBody->get_innerHTML(&bstrHTML); pBody->Release(); strHtml=bstrHTML; SysFreeString(bstrHTML); if (strHtml.GetLength()>=20 ) strmsg+=strHtml; else strmsg=""; //AfxMessageBox(strHtml); } else { strmsg=""; } } } else { // disable the Code Window controls // AfxMessageBox("not html"); } } return hr; } to: mickeyx(alanet.51.net) 回复于2002-1-16 14:51:13 你取到的原码和"View Source"的不一样吧? 取到的原码和"View Source"的一样to bskay(bskay) 回复于2002-1-16 14:54:05 怎么得到 iframe 或者 frame的 IHTMLDocument2对象指针 把hr = m_spWebBrowser2->QueryInterface(IID_IDispatch, (void**)&lpWBDisp); //将下载的文档指针同IE的文档指针比较,如果不同可能是下载的frame或图片 if (lpWBDisp!=lpTopDisp) { //退出 return S_OK; }去掉就可以了 急急急!谁能帮我解释一下这段代码? 在对话框中嵌入视图,其大小随对话框大小而改变 用cdialog写了一个程序,同时自定义了一个文件扩展名,怎样实现打开自定义扩展名的文件时,启动我的程序打开 本人写的一本有关于计算机的小说,希望各位多多捧场! 寻找一个VC资料 installshield安装问题? 我给100分,解答了再给也行 请问高手哪有vc的源代码下载ftp 都可以 救救我 帮我解释一下一个COM的知识吧 没有办法,只好又问一遍了,希望可以得到你的帮助 谁有UltraEdit9.0的注册码?
看看这个!
HRESULT GetDHtmlObject(IDispatch *lpTopDisp)
{
HRESULT hr ;
CComPtr<IDispatch> pDisp;
LPDISPATCH lpWBDisp; //m_spWebBrowser2为IE的指针
if (m_spWebBrowser2)
{
//取得IE的文档指针
hr = m_spWebBrowser2->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
//将下载的文档指针同IE的文档指针比较,如果不同可能是下载的frame或图片
if (lpWBDisp!=lpTopDisp)
{ //退出
return S_OK;
}
//取得Document对象
hr=m_spWebBrowser2->get_Document(&pDisp);
if (hr==S_OK)
{ //是HTML对象
spHTML = pDisp; BSTR bstrHTML;
CString strHtml;
IHTMLElement *pBody;
//取文档的URL
hr=spHTML->get_URL(&bstrHTML);
if (hr==S_OK)
{
strHtml=bstrHTML; //AfxMessageBox(strHtml);
}
//检验是不是http协议
if(strHtml.Left(7)=="http://" )
{
strmsg=strHtml+ "\r\n"; //取文档title
hr=spHTML->get_title(&bstrHTML);
if (S_OK==hr)
{
strHtml=bstrHTML;
strmsg+=strHtml;
SysFreeString(bstrHTML);
//AfxMessageBox(strHtml);
}
//取文档body
hr=spHTML->get_body(&pBody);
if (S_OK==hr)
{
pBody->get_innerHTML(&bstrHTML);
pBody->Release(); strHtml=bstrHTML;
SysFreeString(bstrHTML);
if (strHtml.GetLength()>=20 )
strmsg+=strHtml;
else
strmsg="";
//AfxMessageBox(strHtml);
}
else
{
strmsg="";
}
} }
else
{
// disable the Code Window controls
// AfxMessageBox("not html"); } } return hr;
}
你取到的原码和"View Source"的不一样吧? 取到的原码和"View Source"的一样to bskay(bskay) 回复于2002-1-16 14:54:05
怎么得到 iframe 或者 frame的 IHTMLDocument2对象指针
把hr = m_spWebBrowser2->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
//将下载的文档指针同IE的文档指针比较,如果不同可能是下载的frame或图片
if (lpWBDisp!=lpTopDisp)
{ //退出
return S_OK;
}
去掉就可以了