由于需要最近研究了一下BHO技术,本文就采用VC++编程为大家介绍一下一个BHO*监控插件的实现。该插件适用于lE浏览器,其他浏览器不支持,如果需要开发其他浏览器的插件需要有相应的开发包,像浏览器就有相应的开发包。 小知识:BHO(BrowserHelperObject,浏览器辅助对象,简称BHO)。BHO是微软推出的作为浏览器对第三方程序员*交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(INTERACTIVEDInterface)。通过这个接口,程序员可以编写代码获得浏览器的行为,比如“后退”、“前进”、“当前页面”等,利用BHO的交互特点,程序员还可以用代码控制浏览器行为,比如修改替换浏览器工具栏,添加自己的程序按钮等。这些在*看来都是没有问题的。BHO原来的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。 在正式编写代码之前,我们需要了解一些东西,首先是IE浏览器加载BHO插件的原理。 1.IE的窗口打开时,先寻找HKLM下的SOFTWARE\Microsoft\Win\CurrentVersion\Explorer\BrowserHelperObjects\里的CLSID,这些CLSID,都对应着相应的BHO插件,然后根据这个CLSID到HKCR下的CLSIDs里找到此插件的信息,包括文件位置等。IE浏览器中的一个迅雷插件。 2.IE根据找到的CLSID信息创建BHO对象,并且查找IObjectWithSite接口。(这个接口非常简单,只有SetSite和GetSite两个方式) 3.IE把IWebBrowser2(浏览器插件)传到BHO的SetSite方式,用户在此方式中可挂载自己的事件处理方式。 4.窗口关闭时,iE把null传到BHO的SetSite方式,此方式用来去掉挂载的事件处理方式。 了解了IE浏览器加载BHO的方式之后,我们就来看一下BHO插件的编写流程。 1、创建IObjectWithSite显式接口,创建COM类型,实现继承IObjectWithSite接口 2、实现此接口并在SetSite方式里加上所要挂载的事件 3、处理事件 4、注册此BHO到注册表中HKLM下的Software\\Microsoft\\Win\\CurrentVersion\\ExplorerBrowserHelperObjects;(HKCR下的CLSIDs是根据上面的路径自动注册的) 5、.net下须设置此BHO项目的”配置属性一>生成”中为Interop注册为True,这样才能将.net类库文件注册到COM。 我们采用VC6.O创建好环境之后,就要进行代码的编写了。由于我们在IE浏览器中加载插件,所以其他的浏览器我们就不允许dll加载了。这样我们就需要在dllMain函数中对加载该dll的程序进行判断,代码如下:STDMETHODIMPCIEH1probj::lnvoke(D*PIDdispidMemberm,REFIIDriid,LCIDlcid,WORDwFlags,D*PPARAMS*pDispParams,VARIANT*pvarResult,EXCEPINFO*pExceplnfo,UINT*puArgerr){USES_CONVERSION;if(!pDispParams)returnE_INVALIDARG;LPOLESTRlpURL=NULL;m_spwebBrowser2->get_LocationURL(&lpURL);charsitelist{}{};//所有站点名称()charsite{};//站点名称ifstreamin("C:\\SiteListdat",ios::in);//从我们的文件中读取要检测的*if(in.fail()){returnE_INVALIDARG;} 这段代码我们添加在dllMain函数的开始位置,这样就能确保只有iexplore.exe才能加载我们的插件。BHO对象与浏览器进行交互是通过事件实现的,那么他们之间的交互有几种事件呢?下面就列举一下常用到的事件: D*PID__BEFOREN*IGATE2:该事件在浏览器准备下载网页之前触发,这样这个事件就可以用在我们检测用户输入的网页*上。 D*PID_DOWNLOADBEGrN:该事件在浏览器开始下载网页时触发。 D*PID_N*IGATECOMPLETE:该事件是在一个链接(网页窗口或者网页Frame框架窗口)被完全打开后,IE浏览器或WebBrowser控件触发的事件。这个事件已经废弃。应该运用D*PIDN*IGATECOMPLETE2。 D*PID_DOVVrNLOADCOMPLETE:该事件在网页完全被浏览器下载完毕之后触发。 D*PID_DOCUMENTCOMPLETE:页面加载完毕时触发该事件,当每个FRAME加载完毕后都会触发D*PID_DOCUMENTCOMPLETE。可以在 D*PID_DOCUMENTCOMPLETE中,判断是否是整个页面加载完毕。 D*PID_NEWWINDOW2:该事件在有新的窗口打开时触发,例如弹窗网页。 了解了上述的事件机制之后,我们就明确怎么编写我们的代码了,既然是监控*的,那么我们可以在D*PID_BEFOREN*IGATE2事件中对*进行监控。事件的方式我们需要在Invoke函数中编写。这里我们用switch语句对事件进行判断,要处理的*我们放到文件里,让程序从文件里读取*,然后与用户输入的*进行对比。
整理分享BHO网址监控插件的实现的方式 (监控插件下载),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:监控插件下载,wa监控插件,zabbix监控网页,监控播放插件,监控插件手机版下载,网站监控工具,wa监控插件,监控插件手机版下载,内容如对您有帮助,希望把内容链接给更多的朋友!
编译之后生成了一个dll文件,这就是我们需要的文件。我们在*文件中写入我们需要*的*,这里用百度做测验。下一步就是注册我们的dll文件,用cmd命令“regsvr