- 浏览: 2035631 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的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
鼠标移到按钮上时的图标全路径
如下子键为按下按钮后需要执行的相应动作:可以是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菜单中加入菜单项
在注册表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 方法
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定制你的Internet Explorer浏览器
发表评论
-
如何使用BHO定制你的Internet Explorer浏览器
2009-08-20 11:26 2165如何使用BHO定制你的In ... -
ATL入门:利用ATL编写简单的COM组件
2009-08-19 18:26 17764使用ATL编写一个简单的COM服务器文/赵湘宁 ... -
用 ATL ActiveX 绘制任意平面函数的曲线
2009-08-19 18:23 1651用 ATL ActiveX 绘制任意 ... -
COM多线程原理与应用
2009-08-19 18:14 2700COM多线程原理与应用 目录: COM多线程原 ... -
com技术简介
2009-07-28 11:32 2730一、COM是一个更好的C++1、COM 是什么Don Box ... -
COM高手总结的八个经验和教训之一
2009-07-28 11:31 1790在日常工作中,我看到 ... -
COM高手总结的八个经验和教训之二
2009-07-28 11:31 2020STA 线程需要消息循环 ... -
COM基础知识
2009-07-28 11:30 1917(1) COM组件实际上是一个C++类,而接口都是纯虚类。 ... -
COM原理及应用----概述
2009-07-28 11:29 18591、组件设计的原始目的 跨平台、跨网络、积木式搭建程序 2、组 ... -
COM原理及应用----COM对象和接口
2009-07-28 11:29 44231、COM对象的理解 ... -
COM原理与应用----COM的实现
2009-07-28 11:28 29681、COM的实现与操作系 ... -
COM原理及应用----COM特性
2009-07-28 11:28 21021、面向对象系统的三个最基本的特性 封装性、多态性 ... -
COM原理及应用----用Visual C++开发COM应用
2009-07-28 11:27 36501、MFC和ATL 对于COM应用的开发来说,建 ... -
COM原理及应用----可连接对象
2009-07-28 11:26 23551、COM的高级特性 COM规范中有一些高 ... -
COM原理及应用---- 结构化存储
2009-07-28 11:25 24491、结构化存储 ... -
COM原理及应用----命名和绑定技术
2009-07-28 11:25 32921、COM对象的创建方法 客户程序可以通过 ... -
COM原理及应用----统一数据传输
2009-07-28 11:24 24621、概述 COM提供了应用之间数据交换的标 ... -
COM原理及应用----分布式COM(DCOM)
2009-07-28 11:24 30921、DCOM COM的 ... -
COM原理及应用----自动化(Automation)对象
2009-07-28 11:23 23031、自动化技术 自动化技术既以前提到的OL ... -
COM原理及应用----ActiveX控件
2009-07-28 11:22 41151、ActiveX控制 ActiveX控制 ...
相关推荐
- 实现BHO的核心功能,比如通过IWebBrowser2接口与IE浏览器通信。 - 注册BHO,使其在IE启动时自动加载。 - 测试和调试,确保BHO在各种IE操作中能够正常工作。 6. **安全性**: - 开发BHO时必须考虑安全问题,...
**开发BHO插件 定制IE浏览器** BHO(Browser Helper Object)是微软Internet Explorer浏览器的一种扩展机制,允许开发者创建自定义插件以增强浏览器的功能。BHO插件能够集成到IE浏览器中,实现诸如网页拦截、内容...
标题中的"delphi-bho.rar_BHO_bho delphi_delphi IE_delphi bho_delphi ie插件"表明这是一个关于使用Delphi编程语言开发IE浏览器的BHO(Browser Helper Object)插件的教程或示例代码集合。BHO是Windows操作系统中的...
IObjectWithSite接口是BHO与宿主环境(即IE浏览器)进行通信的关键。通过此接口,BHO可以获取到其所在站点的信息,从而了解自身是在哪个浏览器窗口或框架内运行,以便正确地响应事件和请求。 六、构造自己的BHO对象...
通过这些事件处理机制,BHO可以按照开发者的需求,对IE浏览器的行为进行定制。 BHO不仅可以监听浏览器事件,还可以操作浏览器的文档对象。文档对象模型(Document Object Model,DOM)是浏览器页面的内部表示,通过...
本文将深入探讨IE浏览器的定制与扩展技术,并基于给定的文件名解析相关知识点。 首先,IE浏览器的定制主要涉及用户界面(UI)的调整、功能的增加以及行为的改变。这通常通过编写ActiveX控件、BHO(Browser Helper ...
- 不同的Shell版本和操作系统版本支持不同的BHO特性,如4.00仅支持IE4.0,4.71及以上版本才支持文件浏览器和IE。 5. **开发BHO的步骤** - 使用Visual C++(如VC6.0)配合ATL(Active Template Library)和...
在IT领域,IE浏览器过滤器是一项重要的功能...通过这样的机制,用户可以根据个人或组织的需求定制一个安全、高效的IE浏览器过滤环境。同时,这也展示了如何利用编程技术来扩展和增强浏览器的功能,满足特定的使用场景。
**IE浏览器BHO插件程序** BHO,全称为Browser Helper Object(浏览器帮助对象),是Microsoft Internet Explorer(IE)浏览器中的一种扩展机制。它允许开发者创建小型动态链接库(DLL),这些库能够与浏览器集成,...
IE浏览器支持BHO(Browser Helper Object)和 Toolbar Band Object 等插件形式,我们可以利用这些机制来增强其功能。 1. **创建BHO(Browser Helper Object)**: BHO 是一种 COM 对象,可以在浏览器启动时自动...
总结来说,要调试IE8中的BHO控件或工具栏,必须配置系统自动调试,指定调试器附加到正确的Tab进程中。BHO作为一种强大的定制工具,使得开发者能够轻松地扩展和定制Internet Explorer的用户体验。
在本教程中,我们将深入探讨如何使用VC++来开发一个支持explorer资源管理器与IE浏览器的BHO。 首先,我们需要了解COM(Component Object Model)。COM是一种微软的二进制接口标准,用于不同应用程序之间的对象交互...
#ie-bho-extension IE 扩展/插件的浏览器助手对象 (BHO) 原型。 先决条件 该项目是在 Windows 7 VM 上使用 Visual Studio Express 2012 编写和构建的。 要在 IE 中完成这项工作(在 IE8 中测试): 以“发布”模式...
http://blog.csdn.net/magictong/article/details/21280243),本文主要讨论的问题是Windows10 x86 & x64(是的x64也包含了)下BHO与IE11(增强保护模式开启)兼容的问题。 其方法和思路跟Windows8下是类似的,但是...
在压缩包文件名称“Se_IExplorerBHO”中,“Se_”可能是项目或作者的标识符,“IExplorer”暗示了与IE浏览器相关的实现,“BHO”是浏览器帮助对象的缩写。这个文件很可能包含了一个用C++编写的BHO的源代码,可能有...
在这个"开发BHO插件-IE置顶广告"的项目中,我们看到一系列源代码文件,它们用于构建一个能够实现IE浏览器顶部广告展示的BHO插件。 1. **BHO的基本概念** BHO是一种COM对象,它在浏览器启动时自动加载,并与浏览器...
在MFC IE浏览器中,可能需要实现BHO来处理特定的网页行为或者添加自定义功能。 2. **WebBrowser控件**:这是IE浏览器的核心,它是ActiveX控件,允许嵌入到其他应用程序中,提供浏览网页的能力。在MFC中,可以通过`...
**VC制作BHO插件(IE浏览器插件)** 在互联网技术中,浏览器插件(Browser Helper Object,简称BHO)是一种特殊的COM组件,它能够嵌入到Microsoft Internet Explorer浏览器中,提供额外的功能或增强用户体验。BHO...
标题中的“一个IE浏览器的插件的源代码.zip”表明这是一个关于Internet Explorer(简称IE)浏览器的插件开发的源代码包。插件是增强浏览器功能的第三方软件,通常用于扩展浏览器的功能,如添加工具栏、拦截广告或...