不知道读者朋友注意到没有,金山词霸、网络蚂蚁等应用软件在电脑上安装后会向IE浏览器的工具条添加自己的按钮,用户按下按钮后IE会启动对应的软件,作出相应的动作。上述这种功能是如何实现的呢?本实例介绍了一种实现方法,可以将自己应用程序的按钮添加到IE的工具条中。
一、实现方法
微软从IE5.0开始便允许开发人员向其工具栏中添加按钮,其实现方法的本质就是修改注册表,添加创建此按钮所需的信息。首先要创建此按钮的GUID(globally unique identifier),这个GUID可以通过Visual Studio中的Guidgen.exe来产生。例如一个生成的GUID是{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}(本例在以下的叙述中都使用这个GUID来作说明)。有了GUID值后,要在Windows注册表中创建子键:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\{1FBA04EE-3024-11D2-8F1F-0000F87ABD16} |
在此子键下创建如下字串值:
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.yesky.com userURL=external.menuArguments.location.href; protocolIndex=userURL.indexOf("://",4); serverIndex=userURL.indexOf("/",protocolIndex + 3); finalURL=userURL.substring(0,serverIndex); external.menuArguments.open(finalURL, "_blank");//打开网址; </script> |
④可执行文件
假如想让IE在按下按钮后执行一个可执行文件, 可以增加名为Exec的字串值,其值为此可执行文件的全路径,例如c:\windows\notepad.exe或者是一个网址http://www.yesky.net
有了上面的知识,就可以通过修改注册表来实现向IE工具条添加按钮的功能了。
二、编程步骤
1、启动Visual C++6.0,生成一个基于对话框的应用程序,将程序命名为"IEButton";
2、修改应用程序对话框中的按钮,其标题分别为"添加"和"退出";
3、使用Class Wizard为应用程序的"添加"按钮添加鼠标单击的消息响应函数OnAdd();
4、添加代码,编译运行程序。
三、程序代码
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("天极网","ButtonText"); reg.SetValue(IconPathName,"Icon"); reg.SetValue(HotIconPathName,"HotIcon"); /////假如是执行脚本,可以是reg.SetValue("c:\\test.html","Script"); ///在test.html 存放你的脚本代码<br> reg.SetValue("http://www.yesky.com/","Exec");///打开网页 } |
四、小结
本实例介绍了在IE工具栏中添加按钮的方法和思路,读者朋友们可以在消化吸收的基础上,把自己开发的应用程序添加到IE中,为实现自我宣传增加一种方法和途径。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/