枚举IHTMLDocument2中所有IFRAME的内容 收藏
#include <mshtml.h>
#include <afxhtml.h>
#include <atlbase.h>
#include <oleacc.h>
#include <MsHtmcid.h>
void EnumFrame( IHTMLDocument2 *pHTML )
{
CComQIPtr<IOleContainer> spContainer( pHTML );
if( spContainer )
{
CComPtr<IEnumUnknown> spEnumerator; // 注:参数OLECONTF_EMBEDDINGS // 表示列举容器内的所有嵌入对象
HRESULT hr = spContainer->EnumObjects(OLECONTF_EMBEDDINGS, &spEnumerator);
if( spEnumerator )
{
CComPtr<IUnknown> spUnk;
while (spEnumerator->Next(1, &spUnk, NULL) == S_OK)
{
CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> spWB(spUnk);
spUnk=NULL;
if ( spWB )
{
CComPtr<IDispatch> spDocDisp;
hr = spWB->get_Document(&spDocDisp);
CComQIPtr<IHTMLDocument2> spHTML (spDocDisp) ;
HGLOBAL hMemory;
hMemory = GlobalAlloc(GMEM_MOVEABLE, 0);
CComPtr<IStream> spStream;
CComQIPtr<IPersistStreamInit> spPersistStream = spDocDisp;
if (SUCCEEDED(CreateStreamOnHGlobal(hMemory, TRUE, &spStream)))
{
spPersistStream->Save(spStream, FALSE);
LPCTSTR pstr = (LPCTSTR) GlobalLock(hMemory);
if (pstr != NULL)
{
// Stream is always ANSI, but CString
// assignment operator will convert implicitly.
CString html(pstr);
AfxMessageBox(html);
}
}
EnumFrame( spHTML );
}
}
}
}
}
发表于 @ 2008年11月15日 09:09:00 | 评论( 0 ) | 编辑| 举报| 收藏
旧一篇:使用IHTMLDocument2操作IE命令 | 新一篇:用RegisterHotKey为程序注册系统热键
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/twtzw/archive/2008/11/16/3304218.aspx