如果图片无法显示. 请访问 http://www.horizonideas.com/writings/article.php?id=12
授权优快云, 请在征求同意后转载. 作者: 陈嘉, NetSecure Inc, Canada, 软件工程师
微软在1997年正式退出Browser Helper Object (BHO), 使程序员能够更好的对IE进行二次开发和操作. 在通过编写BHO程序数月后, 我希望把我的一些经验告诉才开始的同志, 避免走一些弯路.
我本人是非常喜欢C++的. 因为C++对内存直接操作的方式可以节省非常多的内存损耗, 也更快一些. 但是在开发BHO的时候, 我的确也认识到, C#明显要比C++强大很多. 例如C#提供的FOREACH 循环就可以避免FOR循环产生的溢出. 另外C#的类型转换也明显要强于C++. 毕竟BHO和C#都是出自微软一家, 理所当然, C#更适合BHO开发一些. 我的第一个BHO程序是用C++写的. 对于COM的操作,让我至少弄了几天才搞清楚他们到底想干什么. 但是我的第一个C# BHO程序只用了几分钟就搭建好了钩子. 如果你希望从事BHO开发, 而且你才开始学. 我想这片篇文章对您有点帮助.
这篇文章本来是用英文写成的. 因为工作环境的原因, 中文已经越来越生疏. 如果有错误或者不太明显的地方. 请参考英文原文
http://www.horizonideas.com/writings/article.php?id=11
下面竟让我们开始.
首先我们需要在C#中新建一个DLL工程. 因为BHO是通过让IE调用DLL来驱动的. 我用的是V C# EXPRESS. 因为这已经完全够用了. V C# PROFESSIONAL 并不需要, 而且还很浪费内存.

当我们建立一个空工程以后, 随便添加一个文件夹叫BHO, 然后添加一个文件.
需要我们注意的是, 我们这个文件必须被命名为IObjectWithSite.cs因为这样IE才知道这是一个BHO程序. 如果想知道更多关于IObjectWiteSite接口的内容, 请查询MSDN http://msdn2.microsoft.com/en-us/library/Aa768220.aspx
在IObjectWithSite中必须有两个方法GetSite和SetSite. 我们主要是对后者进行调用.通过名字大家就可以猜到他们是干什么的.