在有多个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 );
}
源代码如下:
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 );
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货