摘要:在IE8的工具栏上注册自定义工具的方法主要有两种:一种是通过gpedit.msc中提供的UI工具来配置生成;另一种是通过手工修改注册表来实现。在本博文中,小鑫将先介绍UI的方法,然后通过讲解IE8管理自定义工具的原理来介绍如何通过手工或编程方式修改注册表的方法。
正文:
首先在Windows 的运行窗口中打开gpedit.msc(只有Windows Xp professional+的操作系统中才有该工具), 然后在本地组策略编辑器窗口中依次找到并打开结点“本地计算机 策略”\用户配置\Windows设置\Internet Explorer维护\浏览器用户界面,
接着选中“浏览器用户界面”节点,并在右侧窗口中找到项“浏览器工具栏自定义”,双击该项打开“工具栏自定义”对话框
在该对话框中点击“添加”按钮,在弹出的“浏览器工具栏按钮信息”对话框中填入自定义工具路径、图标、工具标题等信息,最后点击自定义工具则添加成功。
此时,打开IE,在IE工具栏上还无法看到该工具。所以,接着将鼠标移至IE工具栏上,点击右键,在弹出的右键菜单中找到“添加或删除命令”菜单项,
然后点击该菜单项,在弹出的“自定义工具栏”对话框中找到刚刚我们在gpedit.msc中添加的自定义工具,然后双击该项或选中该项点击“添加”按钮即可。
本来IE添加自定义工具介绍到这里应该是可以结束了,但是呢,对于像小鑫一样的开发人员来说却并不能满足,小鑫做事中喜欢求究竟。那么下面小鑫就简单介绍下在IE8工具栏上添加自定义工具的原理。
IE8工具栏上的自定义工具是IE8在启动时通过读取注册表中HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions下的子项的相关配置信息后初始化生成的。该子项以GUID命名,且其最后两位必须为数字或小于G的字母,否则自定义工具无法初始化。而自定义工具的其他详细信息则以该子项的键值的形式存储在注册表中,其键名、取值和说明见下表:
键名 | 类型 | 取值 | 备注 |
Default Visible | DWORD | Yes或No | 该工具在IE8中是否默认可见 |
ButtonText | DWORD |
| 该工具显示的名称 |
CLSID | DWORD | {1FBA04EE-3024-11d2-8F1F-0000F87ABD16} | 恒为该guid值 |
Icon | DWORD |
| 图标路径 |
HotIcon | DWORD |
| 在IE8工具栏上当鼠标指向该工具时该工具显示的图标路径 |
Exec | DWORD |
| 点击该工具按钮后IE8调用的可执行文件路径 |
Script | DWORD | 点击按钮时执行的脚本 ,其与《如何在IE右键菜单中添加自定义项》中的脚本构建方式相同 | |
ClsidExtension | DWORD | 点击按钮时IE调用的的COM组件。将在以后的博文中进行进一步介绍 | |
下面是这些键值在注册表中的截图:
使用程序注册代码如下:
{
static string guid = "{CABE2334-6D3F-425F-9A7B-B64CEF0AF241}";
public static void Install(string targetdir)
{
RegistryKey root = Registry.CurrentUser;
RegistryKey ieExtentKey = root.OpenSubKey(@"Software\Microsoft\Internet Explorer\Extensions",true);
RegistryKey cmdBarKey = ieExtentKey.OpenSubKey(guid);
if (cmdBarKey == null)
cmdBarKey = ieExtentKey.CreateSubKey(guid);
cmdBarKey.SetValue("Default Visible", "Yes");
cmdBarKey.SetValue("ButtonText", "导入搜狗浏览器收藏夹");
cmdBarKey.SetValue("CLSID", "{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}");
cmdBarKey.SetValue("Icon", targetdir+"\\sg.ico");
cmdBarKey.SetValue("HotIcon", targetdir + "\\sg.ico");
cmdBarKey.SetValue("IeakPolicy", "");
cmdBarKey.SetValue("Exec", targetdir + "\\SouGouExplorer2IE8.exe");
cmdBarKey.Close();
}
public static void UnInstall()
{
RegistryKey root = Registry.CurrentUser;
RegistryKey ieExtentKey = root.OpenSubKey(@"Software\Microsoft\Internet Explorer\Extensions",true);
RegistryKey cmdBarKey = ieExtentKey.OpenSubKey(guid);
if (cmdBarKey != null)
ieExtentKey.DeleteSubKeyTree(guid);
}
}
介绍到这里相信大家都应该觉得能够满意了吧,小鑫也可以睡个安稳觉了,哈哈,晚安啰!