如何往IE工具条添加按钮

原创 2001年01月19日 15:47:00

 

如何往IE工具条添加按钮
浙江省温岭市电信局 王骏

下载示例工程

问题提出:
金山词霸、网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮。按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到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
(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文件是不可行的。
请参考如下NetAnts取得当前页所有链接的脚本代码

<script language="VBScript">
--On Error Resume Next
--set NetAntsApi = CreateObject( "NetAnts.API" )
--if err<>0 then
--
--Alert("NetAnts not properly installed on this PC!")
--else
--
--set links = external.menuArguments.document.links
--
--ReDim params(links.length*2)
--
--params(0)=external.menuArguments.document.Url
--
--for i = 0 to links.length-1
--
-- --params(i*2+1)=links(i).href
--
-- --params(i*2+2)=links(i).innerText
--
--next
--
--NetAntsApi.AddUrlList params
--end if
</script>

我们再看一个比较有用的脚本,这段脚本的作用是得到当前地址,并打开此网址的首页。

<script>
--//userURL得到的是当前地址,例如是http://www.vckbase.com/article/controls/index.html
--userURL=external.menuArguments.location.href;
--protocolIndex=userURL.indexOf("://",4);
--serverIndex=userURL.indexOf("/",protocolIndex + 3);
--finalURL=userURL.substring(0,serverIndex);
--external.menuArguments.open(finalURL, "_blank");///打开网址http://www.vckbase.com/
</script>

关于external等对象的具体使用方法请参阅微软的《动态HTML开发参考大全》--人民邮电出版社出版

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

下面我们介绍一个简单的例子。

void CIEButtonDlg::OnAdd()
{
--///这是由GUIDGEN产生的GUID:{06926B30-424E-4f1c-8EE3-543CD96573DC}
--CRegKey reg;
--char KeyName[]="Software//Microsoft//Internet Explorer//Extensions//{06926B30-424E-4f1c-8EE3-543CD96573DC}";
--TCHAR PathName[MAX_PATH];
--TCHAR IconPathName[MAX_PATH]; ///正常时的图标全路径
--TCHAR HotIconPathName[MAX_PATH]; ///鼠标覆盖时的图标全路径
--GetModuleFileName(0,PathName,MAX_PATH); ///得到本可执行文件的路径
--strcpy(IconPathName,PathName);
--strcpy(HotIconPathName,PathName);
--strcat(HotIconPathName,",131"); ///131是图标的ID,你可以以资源方式打开EXE文件就可以看到所有资源及其ID
--strcat(IconPathName,",129");
--reg.Create(HKEY_LOCAL_MACHINE,KeyName);
--reg.SetValue("{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}","CLSID");
--reg.SetValue("Yes","Default Visible");
--reg.SetValue("VC知识库","ButtonText");
--reg.SetValue(IconPathName,"Icon");
--reg.SetValue(HotIconPathName,"HotIcon");
--/////假如是执行脚本,可以是reg.SetValue("c://test.html","Script"); ///在test.html 存放你的脚本代码
--reg.SetValue("http://www.vckbase.com/","Exec");///打开网页
}

在此例子中我们实现了一个按钮,点击它便会打开VC知识库首页。
具体可以参考本文提供的示例工程

 

Android 学习笔记四:创建工具栏按钮

前面我们已经可以在一个Activity中添加一些按钮之类的组件。由于手机的屏幕很小,所以很多时候我们会需要用到工具栏,通过下拉菜单之类的方式来节省空间。Android 提供了对工具栏按钮的强大支持。增...
  • lihongxun945
  • lihongxun945
  • 2015年10月07日 18:23
  • 2375

OpenLayers 3自定义地图工具条(一)

对于一个WEB地图应用来说,地图工具条可以说是不可或缺的一个部分,但由于一些样式、功能往往并不能满足实际项目需要,所以仍要对此部分进行定制,从这里将说明如何利用Oplenayers 3根据项目要求做一...
  • wan320
  • wan320
  • 2016年03月03日 15:45
  • 3175

CMFCToolBar工具条添加下拉菜单按钮

想在CMFCToolBar工具条上添加下拉菜单按钮,网上找了半天,都没有例程,研究了一天,终于把ComboBox,DropDownButton和menuButton控件加进去了,不过它们只有定义为CM...
  • CallMeZane
  • CallMeZane
  • 2015年03月24日 14:45
  • 1696

通过CAA在CATIA中创建自己的工具栏按钮和菜单

注:本文在CATIA P3 V5R19和VS2005下实现,文中的链接请自己在CAADoc中寻找   Command(命令) 和 Access(按钮/菜单) 通过 Command Header联系起来...
  • Chinamming
  • Chinamming
  • 2013年11月22日 00:27
  • 5531

在工具栏上加控件

我们经常看到  有些控件式放到工具栏上,但是我用微软工具
  • wuan584974722
  • wuan584974722
  • 2014年10月05日 17:30
  • 1047

对话框中添加工具条

在对话框中添加工具条主要有三个任务: 1、创建工具条按钮; 2、为按钮指定图标; 3、给按钮添加响应事件。         下面将利用资源管理器(也可以通过代码直接创建,这里占时不讨论...
  • u010260855
  • u010260855
  • 2014年03月30日 11:01
  • 1120

SDI在自定义的工具栏上添加下拉控件

0、首先到自己的工具条上新建一个控件,并命名新ID 1、拷贝FlatComboBox.h和FlatComboBox.cpp到工程目录下 2、建立新类 class CTracke...
  • skyhuangdan
  • skyhuangdan
  • 2014年06月13日 13:05
  • 510

FckEditor工具栏添加自定义按钮,并实现点击按钮的功能

由于前几天,项目中需要在fckeditor编辑器中,将别的网站中的新闻复制进来的时候,里面的图片存储在这些网站的服务器上,需要将这些外部图片下载下来,然后存放在我们自己的服务器上,然后替换这些外部图片...
  • u010248330
  • u010248330
  • 2016年12月01日 08:23
  • 789

openlayers3自定义工具条

对于一个WEB地图应用来说,地图工具条可以说是不可或缺的一个部分,但由于一些样式、功能往往并不能满足实际项目需要,所以仍要对此部分进行定制,从这里将说明如何利用Oplenayers 3根据项目要求做一...
  • u014529917
  • u014529917
  • 2016年08月18日 14:21
  • 1983

工具条按钮间距的调整

原文链接:点击打开链接 表3-3中罗列了所有的系统按钮,实际UIKit中还提供了两个没有出现在表中的常量。分别是UIBarButtonSystemItemFlexibleSpace 以及  ...
  • Ronaldo_Carry
  • Ronaldo_Carry
  • 2015年11月07日 10:31
  • 199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何往IE工具条添加按钮
举报原因:
原因补充:

(最多只允许输入30个字)