在有多个frame的网页中使用会出现Debug Assertion Failed!错误 。
源代码如下:
CoInitialize( NULL );//显式装载 MSAA 判断是否被安装
hInst = ::LoadLibrary( _T("OLEACC.DLL") );
if ( hInst != NULL )
{
  if ( hWnd != NULL )
  {
    HWND hWndChild=NULL;
    // 取得当前窗口的IE子窗口指针
    ::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );
    if ( hWndChild )
    {
      //定义IE文档
      CComPtr<IHTMLDocument2> pHTMLDoc;
      LRESULT lRes;      //由于WM_HTML_GETOBJECT非Windows标准消息,所以需要RegisterWindowMessage
      UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
      ::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );      LPFNOBJECTFROMLRESULT pfObjectFromLresult = 
        (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
      if ( pfObjectFromLresult != NULL )
      {
        HRESULT hr;
        //获取网页的IHTMLDocument2接口
        hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&pHTMLDoc );
        if ( SUCCEEDED(hr) )
        {
          CComPtr<IHTMLSelectionObject> pSelObj;
          CComPtr<IHTMLTxtRange> pTxtRange;
          CComPtr<IHTMLLocation> pLocation;
          hr = pSelObj->createRange((IDispatch**)&pTxtRange);          // 相应操作......
          pHTMLDoc->get_selection(&pSelObj);
          pTxtRange->select();
          pHTMLDoc->get_location(&pLocation);
          pLocation->get_href(&bstrTxt1);
          pHTMLDoc->get_title(&bstrTxt1);
        }
      }
    }
  } // else Internet Explorer is not running
  ::FreeLibrary( hInst );
}