C++中使用BHO来屏障特定网站BHO(浏览器辅助工具)是一种简朴的ATL COM工具,而Internet Explorer会在每次运行时都加载它;换句话来说,即每个Internet Explorer的实例都市加载它。BHO运行在Internet Explorer的地址空间内,能对可接见的工具(如窗口、模块等等)执行任何操作,且由于它依附于浏览器的主窗口,以是其生命期与浏览器实例的生命期一致。 若是在系统中打开了活动桌面,BHO也能随同Windows Explorer一 起启动。若是不想在Windows Explorer中运行BHO,可将如下代码添加到DLLMain中: TCHAR strLoader[MAX_PATH]; ::GetModuleFileName (NULL, strLoader, MAX_PATH); if(stricmp("explorer.exe", strLoader) == 0) return FALSE; BHO的COM Server必须实现IObjectWithSite,以便工具可以挂钩到浏览器事宜,Internet Explorer会依赖IObjectWithSite将一个指针通报到它的IUnknown接口,以是,只需实现IObjectWithSite的SetSite方式就行了,如下所示: STDMETHODIMP CBhoApp::SetSite(IUnknown *pUnkSite) { //获取并存储IWebBrowser2指针 m_spWebBrowser2 = pUnkSite; if (m_spWebBrowser2 == NULL) return E_INVALIDARG; //获取并存储IConnectionPointerContainer指针 m_spCPC = m_spWebBrowser2; if (m_spCPC == NULL) return E_POINTER; //毗邻到宿主程序以吸收事宜通知 return Connect(); } 以下是Connect函数比较简朴的实现: HRESULT CBhoApp::Connect() { HRESULT hr; CComPtr spCP; //获取接见WebBrowser事宜的毗邻指针 hr = m_spCPC-gt;FindConnectionPoint(DIID_DWebBrowserEvents2, amp;spCP); if (FAILED(hr)) return hr; //把事宜处置程序通报给宿主程序Each time an event //每次有事宜发生时,宿主程序都市挪用我们实现的IDispatch接口的函数 hr = spCP-gt;Advise(reinterpret_cast (this),amp;m_dwCookie); return hr; } 通过挪用Advise方式,告之浏览器BHO想要接受事宜通知,这意味着BHO会把指向IDispatch的指针提供给浏览器(这是由于要举行组件事宜处置),接下来,浏览器会挪用IDispatch的Invoke方式,并通报给它一个事宜的ID作为参数,因此,BHO必须实现Invoke方式以处置所发生的事宜。 STDMETHODIMP CBhoApp::Invoke(DISPID dispidMember,REFIID riid, LCID lcid,WORD wFlags, DISPPARAMS *pDispParams,VARIANT *pvarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { //在使用ATL字符串转换宏(此处用的是OLE2T)防止编译错误时,必须先挪用这个宏 USES_CONVERSION; if(dispidMember == DISPID_BEFORENAVIGATE2) { BSTR bstrUrlName; HRESULT hr = m_spWebBrowser2-gt;get_LocationURL(amp;bstrUrlName); *>
高危后请关注,民福慧康大药房,公众号,线下DTP药房提供紧急阻断!这项3期临床研究名为IMPOWER 22,预计将于2021年初启动,将评估islatravir(前称MK-8591)的疗效和安全性,这...
如何恢复老婆删除的微信聊天记录/如何恢复老婆删除的微信聊天记录 联网和自媒体时代,知名品牌已很难不被负面新闻困扰。面对负面新闻、敏感事件的评论甚至是一些捕风捉影的臆测,知名品牌的创始人、高管、公关、...
首先需要注意的是,本文即将提到的 Druid,并非阿里巴巴的 Druid 数据库连接池,而是另一个大数据场景下的解决方案:Apache Druid。 Apache Druid 是一个用于大数据实时查...
本文导读目录: 1、黑客帝国里的“杀毒程序”特工厉害?还是“双子星”病毒厉害? 2、黑客帝国2双子星 3、很想知道关于黑客帝国中,关于双子星的更多内容 4、黑客帝国的剧情问题?? 5、...
本文目录一览: 1、门字里面一个隹怎么念 2、“门”字里面加什么才能组成一个字? 3、门里面家个朔什么字? 4、门字里面家一个韦是什么字 5、繁体门字里面有一个家读音 6、门子的门...
我国在颁布的《禁止传销条例》和《直销管理条例》中明文规定,传销和直销的差异界定包含销售行为、产品与价格、销售目的、人事制度和售后等多个方面。 传销的主要目的是不断发展下线,其本质是资金的转移和再分配...