今天晚上难得空闲,上网到处乱转。看了一阵网页,本来想作作ASP.NET程序的,不料又被BHO勾起了兴趣。CSDN上一个2005年的帖子讲到BHO,但是我记得很久以前就已经看到了,于是又搜索了一把。这就是网络浏览的弊端,可以让你找到你想要的东西,但是又很容易让你迷失。
著名的3721、DUDU以及GOOG--LETOOLBAR、以及那个Navihelper.dll之类的东西其实都是运用了一种1999年微软就已经推出了的东西。
从某种观点看,InternetExplorer同普通的Win32程序没有什么两样。借助于BHO,你可以写一个进程内COM对象,这个对象在每次启动时都要加载。这样的对象会在与浏览器相同的上下文中运行,并能对可用的窗口和模块执行任何行动。例如,一个BHO能够探测到典型的事件,如GoBack、GoForward、DocumentComplete等;另外BHO能够存取浏览器的菜单与工具栏并能做出修改,还能够产生新窗口来显示当前网页的一些额外信息,还能够安装钩子以监控一些消息和动作。简而言之,BHO的工作如我们打入浏览器领地的一位间谍(注意这是微软允许的合法工作)。
在进一步了解BHO细节之前,有几点我需要进一步阐述。首先,BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的BHO对象实例就要生成。任何BHO对象与浏览器实例的生命周期是一致的。其次, BHO仅存在于InternetExplorer 4.0及以后版本中。
如果你在使用Microsoft Windows? 98, Windows 2000, Windows 95, orWindows NT版本4.0操作系统的话,也就一块运行了活动桌面外壳4.71,BHO也被Windows资源管理器所支持。BHO是一个COM进程内服务,注册于注册表中某一键下。在启动时,InternetExplorer查询那个键并把该键下的所有对象预以加载。
http://www.vckbase.com/document/listdoc.asp?sclsid=1711
上面有几个例子,基本可以制作一些例如搜索增强、网页过滤、弹出窗口关闭之类的东西,当然你也可以制作一个类似病毒之类的东西,强制人家的IE浏览你的广告之类的。
而且BHO和资源管理器Explorer也同步挂钩,因此也可以制作一个病毒文件。有些病毒文件是绑定TXT文件的打开方式,先运行病毒,病毒在打开NOTEPAD记事本;有的病毒是在盘符下放一个AUTORUN.INF文件,先运行病毒,再运行资源管理器。如果用这个技术,应该不用这么办吧。
什么时候有兴趣再作个什么小软件,类似于广告过滤的看看,不过主要是过滤规则比较麻烦。