摘要:BHO简介: BHO就是Browser Helper Object. 意思就是IE的插件.. 这里有一篇介绍. http://www.microsoft.com/mind/0598/browhelp.asp
更多的控制可以参考: http://msdn.microsoft.com/workshop/browser/ext/extensions.asp
BHO关联原理 (BHO关联的是SHDOCVW,也就是说不只关联IE,下面全部用IE来说明)
1.IE的窗口打开时,先寻找SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\ 这里的对应的是CLSID
2.IE根据CLSID创建 BHO 对象,并且查找 IOleObjectWithSite 接口. (这个接口非常简单,只有SetSite和GetSite两个方法)
3.IE把IWebBrowser2传到 BHO 的 SetSite 方法
4.窗口关闭时,IE把 null 传到 BHO 的 SetSite 方法.
也就是说,如果你要做一个BHO,那么要做以下几个步骤
1.创建 COM 类型, 实现 IOleObjectWithSite 2.在 SetSite 的时候, 得到IWebBrowser2 , 并且进行自定义的初始化 . (一般是关联IWebBrowser2的事件)
3.注册COM类型,并且关联到SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\
OK , 下面来说说如何用 DotNet 做到这点 . 我这里有一个例子程序,是用 VS.NET2003 写的. 里面有一个 _steps.txt 解析了具体的过程.
[ 下载地址http://www.lostinet.com/files/netbho.rar ]
要测试这个例子,你只需要编译这个工程,然后执行NetBHO.reg . 再重新打开IE就OK了.
_steps.txt 的内容为
新建 NetBHO 解决方案和工程
添加对 COM - Microsoft Internet Controls 的引用 (SHDocVw)
添加对 GAC - Microsoft.mshtml 的引用 (Microsoft.mshtml)
添加对 GAC - System.Windows.Forms 的引用 (用于调试)
关闭 vs.net
运行cmd,cd到项目文件夹下
执行
sn -k netbho.snk
ildasm obj/Interop.SHDocVw.dll /output:obj/shdocvw.il
ilasm obj/shdocvw.il /dll /key=netbho.snk /resource=obj/shdocvw.res /output=obj/Interop.SHDocVw.dll /quiet
copy......[
阅读全文]