Electronic Joint Business

Solution for E-Business

ole

用C#编写 IE BHO

在前面几篇文章都是用 VC++ 完成的,为了更加快开发速度,很多程序员会考虑使用 C# 等更便捷的开发方式,这里我们采用 Visual Studio 2010 作为开发工具,你也可以采用 Visual studio 2008,其界面和开发过程与 Visual Studio 2010 类似。

这儿, 我们也简单介绍一下 BHO. BHO 是将自定义功能添加到 Internet Explorer 的轻型 DLL 扩展,除了 IE, BHO 还可以将功能添加到 Windows 资源管理器外壳程序. BHO 通常并不提供其自身的任何用户界面 (UI)。它们而是通过在后台响应浏览器事件和用户输入数据来发挥作用。例如,BHO 可以拦截弹出窗口、自动填充窗体或为鼠标手势添加支持。

在阅读本文之前,建议安装 Visual studio 的 SDK,因为里面提供了包装了 OLE 的装配件, >> 点击下载。如果觉得 Visual Studio SDK 安装包太庞大, 本文也提供了需要几个 OLE 接口的C#源代码。

我们知道,BHO 的生命周期与它所交互的浏览器实例的生命周期相等。在 IE 6 和早期版本中,这意味着要为每个新的顶层窗口创建(和销毁)一个新 BHO。在IE 7中则是为每个选项卡都创建和销毁一个新 BHO。

BHO 必须实现 IObjectWithSite 接口, 该接口提供了两个方法GetSite和SetSite。请在项目中引用” Microsoft.VisualStudio.OLE.Interop “这个装配件。如果没有安装 Visual Studio SDK, 你可以在项目中加入这段 IObjectWithSite 接口的源代码。

>>> 阅读全文

 

, , , ,

用Visual Studio 2008开发IE浏览器帮助对象 之一

这篇文章是应同学们的要求写的,以前都是用 VC++ 6.0 和 Platform SDK 完成的. 迁移到 VS2008之后,原来 Visual Studio 6.0里的 BHO 向导不复存在,因此特此不厌其烦,详细说明,本文也适用于 VS2005.

BHO 简介和开发工具
首先谈 BHO 的开发工具,我偏向使用 VC++(unmanaged C++) 作为开发工具,因为 Java JVM 或 .Net CLR 的虚拟机是个很笨重的东西,也是内存杀手, 并不具备写 plugin 的快捷轻巧的特点.个人并不喜欢将其作为 Plug-in 的开发平台,不过我会有另文说明用 C# 开发 BHO 的全过程, 作为那些偏重开发效率的同学的参考.
其次是类库的选择,我倾向利用“活动模板库”(ATL) 来开发使用 C++ 的 BHO。之所以使用 ATL,是因为它方便地实现了我们可以按需进行扩展的基本样板。尽管使用“Microsoft 基础类”(MFC) 或 Win32 API 和 COM)也可以创建BHO,但 ATL 是为我们提供了自动处理许多细节的轻型库,包括建立含有 BHO 类标识符 (CLSID) 的注册表。

ATL 的另一个优势在于它的 COM 智能感知指针类(例如,CComPtr 和 CComBSTR),这些类可管理 COM 对象的生命周期。例如,CComPtr 在赋值时会调用 AddRef,而在对象被销毁或超出范围时会调用 Release。智能指针简化了代码并且有助于避免内存泄漏。当在单个方法范围内使用时,它们的稳定性和可靠性尤为有用。

介绍完ATL, 我们也简单介绍一下 BHO. BHO 是将自定义功能添加到 Internet Explorer 的轻型 DLL 扩展,除了 IE, BHO 还可以将功能添加到 Windows 资源管理器外壳程序.

 BHO 通常并不提供其自身的任何用户界面 (UI)。它们而是通过在后台响应浏览器事件和用户输入数据来发挥作用。例如,BHO 可以拦截弹出窗口、自动填充窗体或为鼠标手势添加支持。

>>> 阅读全文

 

, , , , ,