为IE增加按钮

来源:互联网 发布:网球王子 知乎 编辑:程序博客网 时间:2024/05/19 22:44
基本原理:
从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、可执行文件。下面是网络蚂蚁修改注册表的例子: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/Extensions/{57E91B47-F40A-11D1-B792-444553540000}] "CLSID"="{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}" "Default Visible"="Yes" "HotIcon"="C://PROGRA~1//NETANTS//NetAnts.exe,1001" "Icon"="C://PROGRA~1//NETANTS//NetAnts.exe,1000" "Exec"="C://PROGRA~1//NETANTS//NetAnts.exe" "ButtonText"="NetAnts" "MenuText"="&NetAnts" "MenuStatusBar"="Launch NetAnts" 下面来看看具体的编程过程。 //这是由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");///打开网页 下面我们再来看看如何添加COM组件 对于COM组件来说,它是没有Exec键名的,但是它多了一个ClsidExtension键名,包含一个类标识,通过这个类标识,IE能够找到实现扩展的COM组件。ClsidExtension实质上等于COM组件的全球唯一定位符COM组件应该在注册时实现上述注册项的添加。而且COM组件还应该实现IoleCommandTarget接口,另外如果你的COM 对象还需要存取当前IE显示的DHTML网页,你还需要实现IobjectWithSite接口。在实现IoleCommandTarget接口的时候,你必须提供IoleCommandTarget::Exec方法,这个方法有一个参数nCmdID标识调用是工具栏按钮单击激活或是菜单响应激活,这种差别允许编程人员为两种不同的事件提供不同的行为。当你实现IobjectWithSite接口时,Internet Explorer会调用IobjectWithSite::SetSite,并传递给它一个IshellBrowser指针,借助于这个指针可以获得与浏览相关的IwebBrowser对象,通过它你就可以对HTML网页进行解析,访问页面中的每一个元素了。 参考文献:http://www.vckbase.com/document/viewdoc/?id=190 http://www.ccw.com.cn/htm/app/salon/01_12_12_3.asp
原创粉丝点击