3,880
社区成员




CoInitialize( NULL );
// 显式加载MSAA,这样我们就可以知道它是否已经被安装
HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );
if ( hInst != NULL )
{
if ( hWnd != NULL )
{
HWND hWndChild=NULL;
// 获取第一个文档的窗口句柄
::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );
if ( hWndChild )
{
CComPtr<IHTMLDocument2> spDoc;
LRESULT lRes;
UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, "ObjectFromLresult" );
if ( pfObjectFromLresult != NULL )
{
HRESULT hr;
hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument2, 0, (void**)&spDoc );
if ( SUCCEEDED(hr) )
{
CComPtr<IDispatch> spDisp;
CComPtr<IHTMLElement> spEle;
CComPtr<IHTMLElement2> spEle2;
CComPtr<IHTMLDocument3> spDoc3;
CComPtr<IHTMLElementCollection> spEleCollect;
CComPtr<IHTMLFramesCollection2> spFreCollect;
CComPtr<IHTMLWindow2> spWin2;
spDoc->get_frames(&spFreCollect);///////获取框架集合
long nFrameCount=0;
hr=spFreCollect->get_length(&nFrameCount);//nFrameCount的值为零,网页里有4个框架
////////////////////////但我通过单进程(就是通过mfc内嵌网页 )调用 框架数目是正确的,请问是什么原因?
}
}
} // else 文档未就绪
} // else IE未运行
::FreeLibrary( hInst );
} // else MSAA未安装
CoUninitialize();