求助给IE绑定DWebBrowserEvents2事件 需要不断调用 ::ObjectFromLresult浏览器才可以正常运行 否则浏览器卡死 有人知道原因吗

Gondon 2016-11-23 05:27:06
UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
LRESULT lRes;
::SendMessageTimeout(hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (PDWORD_PTR)&lRes);
CComPtr<IHTMLDocument2> pHTMLDocument2=NULL;
HRESULT hr = ::ObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (void **)&pHTMLDocument2);
//以上代码必须循环调用 浏览器才可以正常响应事件 否则卡死
if (!m_bIsBindEvent)
{
CComPtr<IHTMLWindow2> pHTMLWindow2=NULL;
hr=pHTMLDocument2->get_parentWindow ((IHTMLWindow2**)&pHTMLWindow2);
CComPtr<IServiceProvider>spServiceProv=NULL;
hr=pHTMLWindow2->QueryInterface (IID_IServiceProvider,(void**)&spServiceProv);

CComPtr<IWebBrowser2> pWebBrowser2=NULL;
hr = spServiceProv->QueryService(SID_SWebBrowserApp,IID_IWebBrowser2,(void**)&pWebBrowser2);

CComPtr<IConnectionPointContainer> pCPC;

pWebBrowser2->QueryInterface(IID_IConnectionPointContainer,(void**)&pCPC);

pCPC->FindConnectionPoint( DIID_DWebBrowserEvents2,&m_pCP);
if(NULL==m_pEventListener)
m_pEventListener=new IEEvent;
hr=m_pCP->Advise( (IUnknown*)(void*)m_pEventListener,&m_dwCookie);
m_bIsBindEvent=true;
}
求助 给IE绑定DWebBrowserEvents2事件 需要不断调用::ObjectFromLresult浏览器才可以正常运行 否则浏览器卡死 有人知道原因吗
...全文
1691 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-12-02
  • 打赏
  • 举报
回复
百度搜相关关键字。
赵4老师 2016-12-02
  • 打赏
  • 举报
回复
引用 4 楼 chaoguodong 的回复:
引用 3 楼 zhao4zhong1 的回复:
十有八九是。
IE 绑定上事件以后 可以检测到事件行为 现在我突然把IE关掉了 我正在获取IE元素的代码 会弹出远程调用失败 错误 像这种 该如何 解决啊 如果我用 WaitForSingleObject等待线程技术 再关闭IE的话 IE会卡死几秒钟 再退出 这样也太不友好了 请问 有没有 这方面的处理的经验
http://www.codeproject.com搜BHO试试看。
Gondon 2016-12-02
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
十有八九是。
IE 绑定上事件以后 可以检测到事件行为 现在我突然把IE关掉了 我正在获取IE元素的代码 会弹出远程调用失败 错误 像这种 该如何 解决啊 如果我用 WaitForSingleObject等待线程技术 再关闭IE的话 IE会卡死几秒钟 再退出 这样也太不友好了 请问 有没有 这方面的处理的经验
赵4老师 2016-11-25
  • 打赏
  • 举报
回复
十有八九是。
Gondon 2016-11-25
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
我反正不知道。 也许百度知道。
老师 莫开玩笑 我看别人 只是绑定一次就行了 而我这边需要调用到这里 ::ObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (void **)&pHTMLDocument2); 才可以 是因为是在线程里面做的原因吗
赵4老师 2016-11-24
  • 打赏
  • 举报
回复
我反正不知道。 也许百度知道。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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