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瀏覽器才可以正常運行 否則瀏覽器卡死 有人知道原因嗎
uj5u.com熱心網友回復:
我反正不知道。也許百度知道。
uj5u.com熱心網友回復:
老師 莫開玩笑 我看別人 只是系結一次就行了 而我這邊需要呼叫到這里 ::ObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (void **)&pHTMLDocument2); 才可以 是因為是在執行緒里面做的原因嗎uj5u.com熱心網友回復:
十有八九是。uj5u.com熱心網友回復:
IE 系結上事件以后 可以檢測到事件行為 現在我突然把IE關掉了 我正在獲取IE元素的代碼 會彈出遠程呼叫失敗 錯誤 像這種 該如何 解決啊 如果我用 WaitForSingleObject等待執行緒技術 再關閉IE的話 IE會卡死幾秒鐘 再退出 這樣也太不友好了 請問 有沒有 這方面的處理的經驗uj5u.com熱心網友回復:
在http://www.codeproject.com搜BHO試試看。
uj5u.com熱心網友回復:
百度搜相關關鍵字。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/116797.html
標籤:HTML/XML
上一篇:關于基于MFC的點菜系統
