关于360IE内核获取了iwebbrowser2和ihtmldocument2之后无法使用问题。

melo0129 2015-07-31 07:19:49
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, LPCSTR("ObjectFromLresult") );
if ( pfObjectFromLresult )
{

hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument2, 0, (void**)&spDoc );
if ( SUCCEEDED(hr) )
{
/*hr = spServiceProv->QueryService(SID_SWebBrowserApp,
IID_IWebBrowser2,(void**)&pWebBrowser2);*/
CComPtr<IHTMLWindow2>spWnd2;
CComPtr<IServiceProvider>spServiceProv;
hr = spDoc->get_parentWindow((IHTMLWindow2**)&spWnd2);
if(SUCCEEDED(hr))
{
hr = spWnd2->QueryInterface(IID_IServiceProvider,(void**)&spServiceProv);
if(SUCCEEDED(hr))
{
hr = spServiceProv->QueryService(SID_SWebBrowserApp,IID_IWebBrowser2,(void**)&pWebBrowser2);
成功获取到iwebbrowser2之后,保存传递给成员变量,但是在另一个函数中使用时却提示错误的指针,
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
melo0129 2015-08-01
  • 打赏
  • 举报
回复
有哪位大神遇到过,给点提示
melo0129 2015-08-01
  • 打赏
  • 举报
回复
但使用是在同一线程下使用,没有跨线程使用
melo0129 2015-08-01
  • 打赏
  • 举报
回复
顺便再补充:在多线程下,IHTMLDocument2有循环获取,IHTMLDocument2的获取也是采用 UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") ); //::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes ); ::SendMessageTimeout( hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes ); 这种方式,中间没有经过任何处理 m_pDoc2->get_readyState(&state); m_pDoc2->get_URL(&thref); m_pWebBrowser->get_ReadyState( &readyState ); 然后在这获取不到值,提示<错误的指针>

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧