`

定制IE浏览器的尖兵利器 - BHO

    博客分类:
  • COM
阅读更多

 

作者:peterzb个人开发历程知识库 - 博客园
出处:http://peterzb.cnblogs.com/

 

IE浏览器是当前使用人数最广的浏览器, 本文主要来讲述如何来打造我们自己特色的浏览器, 自定义工具栏按钮, 自定义网页的右击菜单, BHO技术与IE浏览器. 本文写作过程中参考不少网络上的相关资料, 我将在最后的参考资料中列出这些文章.

自定义工具栏按钮

我们经常看到迅雷, 网际快车(FlashGet)等软件安装后会向IE的工具条添加自己的按钮。按下按钮后还会作出相应的动作,这种功能是如何实现的呢?

基本原理:
从IE5开始便允许我们向工具栏添加自己的按钮,其本质就是修改注册表,添加创建此按钮所需的信息。


实现步骤:
1.创建此按钮的GUID(globally unique identifier)
你可以通过Visual Studio中的Guidgen.exe来产生GUID。
例如我生成的GUID是{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}
以下的例子中我都使用这个GUID来作说明。


2.创建子键HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}


3.在此子键下创建如下字串值。
(1)CLSID
这是IE的CLSID,其值必须为{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}
(2)Default Visible
指明此按钮默认状态下是否可见,Yes表示可见,No为不可见
(3)ButtonText
按钮文字
(4)Icon
默认状态下的图标全路径,例如c:\vckbase.ico。也可以是EXE文件中包含的图标,例如:C:\PROGRA~1\NETANTS\NetAnts.exe,1000(后面的1000是指EXE文件中该图标文件对应的资源ID)
(5)HotIcon
鼠标移到按钮上时的图标全路径

 我的自定义IE工具栏视频监控按钮

如下子键为按下按钮后需要执行的相应动作:可以是COM对象、浏览条Explorer Bar、脚本Script、可执行文件。
下面我们逐个进行介绍。


①COM对象
你需要建立名为ClsidExtension的字串值,其值应该为此COM对象的GUID
例如金山词霸就使用ClsidExtension来调用自己的COM对象。


②浏览条Explorer Bar
所谓浏览条就是类似我们按下往IE历史按钮后打开的历史记录列表,其本质好比MFC中的CReBar对象。 浏览条也可以自己制作,
因为超出了本文的范围,暂不作讲解。 
为了在按下按钮后打开一个浏览条,你需要建立名为BandCLSID的字串值,其值为浏览条的CLSID


③脚本Script
按下按钮后执行的脚本,例如:"%SystemRoot%\web\related.htm"
你可以在这个HTML文件里面加上脚本来得到IE当前的许多信息,需要注意的是假如你想通过Script打开非脚本的HTML文件是不可行的。

 

④可执行文件
假如我们想让IE在按下按钮后执行一个可执行文件, 你可以增加名为Exec的字串值,其值为此可执行文件的全路径,
例如c:\windows\notepad.exe或者是一个网址如http://wwww.cnblogs.com . 最终效果如下

自定义IE工具栏按钮 

 

自定义网页的右击菜单

我们经常看到页面右击菜单中的如迅雷下载所有链接, 百度搜藏, 乃至到收藏此页到【博客园网摘】; 这些是如何实现的呢? 其实很简单, 一句话修改注册表即可.

一、在IE菜单中加入菜单项
在注册表HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt项下建立一个新项,项的名称即为出现在菜单中的标题
将新建项的默认值设定为一个URL地址,当用户点击菜单项后,IE就会调用URL指向的页面中的脚本。举例说明, 收藏此页到【博客园网摘】中其URL地址:http://wz.cnblogs.com/rightclick/, 对应页面就简单一个JavaScript脚本, 大家如果感兴趣可以查看一下其源代码内容.

二、如何控制菜单项在合适的时候显示
下面再介绍一下上面注册项中Contexts项的作用,通过该项可以制定菜单项在右键点击IE中的什么对象时出现,它可以为以下的值或其组合值

对象
缺省CONTEXT_MENU_DEFAULT 0x1
图片CONTEXT_MENU_IMAGE 0x2
控件CONTEXT_MENU_CONTROL 0x4
表单域 0x8
选择文本CONTEXT_MENU_TEXTSELECT 0x10
锚点CONTEXT_MENU_ANCHOR 0x20
超链接 0x22
右键点击网页中除上以外的地方显示该项
CONTEXT_MENU_UNKNOWN
0x40

 

例如上面我们希望菜单项在用户点击图片或者超链接时出现,那么我们就将值设置为

dword:00000022

既在点击图片 或者 锚点时出现菜单。一个锚点是页面中描述一个超链接的对象。如果不设置Contexts 项,则菜单项会在点击任何对象时出现在右键菜单中。收藏此页到博客园网摘功能就是缺省设置.

 

BHO

BHO(浏览器辅助对象)是一种简单的ATL COM对象,而Internet Explorer会在每次运行时都加载它;换句话来说,即每个Internet Explorer的实例都会加载它。BHO运行在Internet Explorer的地址空间内,能对可访问的对象(如窗口、模块等等)执行任何操作,且因为它依附于浏览器的主窗口,所以其生命期与浏览器实例的生命期一致。

  如果在系统中打开了活动桌面,BHO也能随同Windows Explorer一起启动。如果不想在Windows Explorer中运行BHO,可将如下代码添加到DLLMain中:

TCHAR strLoader[MAX_PATH];

::GetModuleFileName (NULL, strLoader, MAX_PATH);
if(stricmp("explorer.exe", strLoader) == 0)
return FALSE;

  BHO的COM Server必须实现IObjectWithSite,以便对象可以挂钩到浏览器事件,Internet Explorer会依靠IObjectWithSite将一个指针传递到它的IUnknown接口,所以,只需实现IObjectWithSite的SetSite方法就行了.

 

参考浏览器帮助程序对象

http://msdn.microsoft.com/library/techart/bho.htm

IWebBrowser2::ShowBrowserBar 方法

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/IFaces/IWebBrowser2/ShowBrowserBar.asp

Browser Helper Objects: The Browser the Way You Want It

如何使用BHO定制你的Internet Explorer浏览器

IHTMLSelectionObject2 Interface

http://msdn.microsoft.com/en-us/library/aa768843(VS.85).aspx

ActiveX Security: Improvements and Best Practices

http://msdn.microsoft.com/en-us/library/bb250471(VS.85).aspx#psd

Building Browser Helper Objects with Visual Studio 2005

http://msdn.microsoft.com/en-us/library/bb250489(VS.85).aspx

BHO,好厉害的东东

VC++开发BHO插件——定制你的浏览器  作者 陆其明

 

参考阅读文档:

浏览器的定制与扩展

用VC6实现IE工具栏

如何往IE工具条添加按钮

如何提取网页中所有链接

采集网页选定部分全攻略

如何获取网页密码框中的密码

如何禁用HTML页面的上下文菜单

如何使用BHO定制你的Internet Explorer浏览器

ATL 实现定制的 IE 浏览器栏、工具栏和桌面工具栏

 

分享到:
评论

相关推荐

    IE浏览器插件编程-COM ATL BHO.zip

    - 实现BHO的核心功能,比如通过IWebBrowser2接口与IE浏览器通信。 - 注册BHO,使其在IE启动时自动加载。 - 测试和调试,确保BHO在各种IE操作中能够正常工作。 6. **安全性**: - 开发BHO时必须考虑安全问题,...

    开发BHO插件 定制IE浏览器.zip

    **开发BHO插件 定制IE浏览器** BHO(Browser Helper Object)是微软Internet Explorer浏览器的一种扩展机制,允许开发者创建自定义插件以增强浏览器的功能。BHO插件能够集成到IE浏览器中,实现诸如网页拦截、内容...

    delphi-bho.rar_BHO_bho delphi_delphi IE_delphi bho_delphi ie插件

    标题中的"delphi-bho.rar_BHO_bho delphi_delphi IE_delphi bho_delphi ie插件"表明这是一个关于使用Delphi编程语言开发IE浏览器的BHO(Browser Helper Object)插件的教程或示例代码集合。BHO是Windows操作系统中的...

    IE插件开发--用BHO(BrowserHelperObjects)定制浏览器.pdf

    IObjectWithSite接口是BHO与宿主环境(即IE浏览器)进行通信的关键。通过此接口,BHO可以获取到其所在站点的信息,从而了解自身是在哪个浏览器窗口或框架内运行,以便正确地响应事件和请求。 六、构造自己的BHO对象...

    IE插件开发--用BHO(Browser_Helper_Objects)定制浏览器.pdf

    通过这些事件处理机制,BHO可以按照开发者的需求,对IE浏览器的行为进行定制。 BHO不仅可以监听浏览器事件,还可以操作浏览器的文档对象。文档对象模型(Document Object Model,DOM)是浏览器页面的内部表示,通过...

    IE浏览器的定制与扩展.zip

    本文将深入探讨IE浏览器的定制与扩展技术,并基于给定的文件名解析相关知识点。 首先,IE浏览器的定制主要涉及用户界面(UI)的调整、功能的增加以及行为的改变。这通常通过编写ActiveX控件、BHO(Browser Helper ...

    VC++开发BHO插件——定制你的浏览器

    - 不同的Shell版本和操作系统版本支持不同的BHO特性,如4.00仅支持IE4.0,4.71及以上版本才支持文件浏览器和IE。 5. **开发BHO的步骤** - 使用Visual C++(如VC6.0)配合ATL(Active Template Library)和...

    IE浏览器过滤器,可以过滤指定网址和关键字。

    在IT领域,IE浏览器过滤器是一项重要的功能...通过这样的机制,用户可以根据个人或组织的需求定制一个安全、高效的IE浏览器过滤环境。同时,这也展示了如何利用编程技术来扩展和增强浏览器的功能,满足特定的使用场景。

    IE浏览器BHO插件程序

    **IE浏览器BHO插件程序** BHO,全称为Browser Helper Object(浏览器帮助对象),是Microsoft Internet Explorer(IE)浏览器中的一种扩展机制。它允许开发者创建小型动态链接库(DLL),这些库能够与浏览器集成,...

    易语言挂接到IE浏览器

    IE浏览器支持BHO(Browser Helper Object)和 Toolbar Band Object 等插件形式,我们可以利用这些机制来增强其功能。 1. **创建BHO(Browser Helper Object)**: BHO 是一种 COM 对象,可以在浏览器启动时自动...

    如何在IE8 下调试BHO控件工具栏(调试Tab进程.docx

    总结来说,要调试IE8中的BHO控件或工具栏,必须配置系统自动调试,指定调试器附加到正确的Tab进程中。BHO作为一种强大的定制工具,使得开发者能够轻松地扩展和定制Internet Explorer的用户体验。

    VC_COM_BHO(Browser Helper Objects)插件制作方法_支持explorer资源管理器与ie浏览器

    在本教程中,我们将深入探讨如何使用VC++来开发一个支持explorer资源管理器与IE浏览器的BHO。 首先,我们需要了解COM(Component Object Model)。COM是一种微软的二进制接口标准,用于不同应用程序之间的对象交互...

    ie-bho-extension:将 javascript 注入到在 IE 中打开的页面的 IE BHO ExtensionAddOn 模板

    #ie-bho-extension IE 扩展/插件的浏览器助手对象 (BHO) 原型。 先决条件 该项目是在 Windows 7 VM 上使用 Visual Studio Express 2012 编写和构建的。 要在 IE 中完成这项工作(在 IE8 中测试): 以“发布”模式...

    兼容Windows10 IE11增强保护模式的BHO

    http://blog.csdn.net/magictong/article/details/21280243),本文主要讨论的问题是Windows10 x86 & x64(是的x64也包含了)下BHO与IE11(增强保护模式开启)兼容的问题。 其方法和思路跟Windows8下是类似的,但是...

    IE浏览器网页网址监控

    在压缩包文件名称“Se_IExplorerBHO”中,“Se_”可能是项目或作者的标识符,“IExplorer”暗示了与IE浏览器相关的实现,“BHO”是浏览器帮助对象的缩写。这个文件很可能包含了一个用C++编写的BHO的源代码,可能有...

    开发BHO插件-IE置顶广告.zip

    在这个"开发BHO插件-IE置顶广告"的项目中,我们看到一系列源代码文件,它们用于构建一个能够实现IE浏览器顶部广告展示的BHO插件。 1. **BHO的基本概念** BHO是一种COM对象,它在浏览器启动时自动加载,并与浏览器...

    基于MFC的ie浏览器源代码

    在MFC IE浏览器中,可能需要实现BHO来处理特定的网页行为或者添加自定义功能。 2. **WebBrowser控件**:这是IE浏览器的核心,它是ActiveX控件,允许嵌入到其他应用程序中,提供浏览网页的能力。在MFC中,可以通过`...

    vc制作BHO插件(IE浏览器插件)

    **VC制作BHO插件(IE浏览器插件)** 在互联网技术中,浏览器插件(Browser Helper Object,简称BHO)是一种特殊的COM组件,它能够嵌入到Microsoft Internet Explorer浏览器中,提供额外的功能或增强用户体验。BHO...

    一个IE浏览器的插件的源代码.zip_IE 插件_bho insertmenu_插件_浏览器_浏览器 插件

    标题中的“一个IE浏览器的插件的源代码.zip”表明这是一个关于Internet Explorer(简称IE)浏览器的插件开发的源代码包。插件是增强浏览器功能的第三方软件,通常用于扩展浏览器的功能,如添加工具栏、拦截广告或...

Global site tag (gtag.js) - Google Analytics