IE添加菜单栏

【IE扩展】增加菜单项

adding_menu_items 

作为一个可扩展的系统,IE提供了优良的可扩展性,它的步骤可以很复杂,也可以很简单。这里我就以一个简单的示例来演示一下如何为IE增加一个简单的扩展。

首先,我们需要向注册表中添加一个扩展键值,通过这个预置的外部接口,我们可以添加必要的参数和IE进行交互。这里我们要求我们的IE版本起码在IE5之后。

生成GUID

可以利用Visual Studio的工具->创建GUID工具创建GUID。

generate GUID

添加注册表项

方法一:打开注册表编辑器(在“开始”->“运行”输入“regedit”(不含引号),确定进入),找到下列键值:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions

其中HKEY_CURRENT_USER部分可以替换为HKEY_LOCAL_MACHINE,这样的替换将导致后续的操作将作用于本机的所有用户,而HKEY_CURRENT_USER则只影响本机的当前用户。

在Extensions节点上添加新项,其名称即为之前所创建的GUID。在该GUID下创建相应的项,这些项的名称和内容按下表所示:

CLSID:这里将这个值设置为{1FBA04EE - 3024 - 11d2 - 8F1F - 0000F87ABD16},这个值说明是CLSID_Shell_ToolbarExtExec的扩展类。

MenuText:这个值将被用于菜单名的显示。

MenuCustomize:这个值可选,用于指示菜单项应该出现在哪?如果要出现在“帮助”旗下,那就设置它为“help”,设置成别的选项或者压根不设置都将导致这个菜单被放置到“工具”一栏中。

MenuStatusBar:这个值可选,用于在菜单项被选择的时候在状态栏中会提示相关的提示信息。

按动菜单必然需要触发点事件,对IE的扩展需要更加方便的方式,而不是重新修改IE的代码再编译,这通常也不被允许。IE提供的拓展方式有3种,执行一个COM组件、执行一段脚本或者是执行一个可执行程序。而这些需要我们设置相应的值,它们分别是:

ClsidExtension:我们首先需要有一个实现了IOleCommandTarget接口的COM对象,然后再将它注册,将COM对象的GUID值作为该项的值。
Script:我们可以在本地磁盘创建一份脚本文件(根据我的经验,可以是
* .html, * .htm, * .js等可以执行脚本的文件类型),然后将它们的路径作为该项的值。例如:file: // C:\plug-in. htm
Exec:与Script基本类似,这里要求添加一个exe文件的路径作为该项的值。


以上各项可以并存,运行该菜单的时候就可以执行相应代码了。

这里我以Script为例,做一个字数统计的示例。

添加脚本代码:

< script type = " text/javascript " >
var  win  =  external.menuArguments;
var  document  =  external.menuArguments.document;
function  OnContextMenu(){
    
// MSDN : selection Object
     // http://msdn.microsoft.com/en-us/library/ms535869(VS.85).aspx
     var  range  =  document.selection.createRange();
    
var  str  =   new  String(range.text);
    
    
var  length  =  str.length;
    
var  output  =   "" ;
    
    
if (length  ==   0 )
        output 
+=   " 请选择一段文字!\n " ;
    
else  {
        output 
+=   " 文字的长度为 =  "   +  length  +   " 。\n " ;

        
// calculate how much this subString in the document
         var  displayTime  =  document.body.innerText.split(str).length - 1 ;

        output 
+=   " 该文本在该页面中一共出现 "   +  displayTime  +   " 次。\n " ;
    }
    showMessage(output);
}

function  showMessage(message){
    alert(message);
}

OnContextMenu();

< / script>

添加脚本代码路径:

名称Script,值http://www.cnblogs.com/volnet/admin/file:///C:/plug-in.htm(把文件放在C盘之下),并设置ClSID和MenuText值

运行后选择文本,然后在菜单中找到添加项。

方法二:除了使用注册表编辑器进行手动添加,我们也可以通过*.reg文件直接向注册表导入该项目,保存下面的文本为<filename>.reg,并运行它们即可,根据上文设置相应的值。

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions\{4D566E3D - 15E7 - 43ed - B2BF - FDC6EE6C98C3}]
@= ""
" MenuStatusBar " = " Calculate the count of charactor in the selected word. "
" MenuCustomize " = " help "
" MenuText " = " Word Count "
" CLSID " = " {1FBA04EE-3024-11d2-8F1F-0000F87ABD16} "
" Exec " = " file://E:\\MyCSharpProject\\JavaScript\\HelloWorld.exe "
" Script " = " file://E:\\MyCSharpProject\\JavaScript\\plug-in.html "
" ClsidExtension " = ""

以上步骤完成了对IE的菜单进行扩展。

同样类似的还有Standard Context Menu(标准上下文菜单)。使用同样的脚本我们可以添加标准上下文菜单。这一步骤仅需我们的浏览器为IE4.0以上即可(之前的步骤要求5.0以上)

我们经常见到在页面中右键,有迅雷下载,添加到QQ表情等,你知道他们是怎么制作的吗?在注册表打开以下键值:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

在其下添加脚本文件(和菜单项不同的是它只允许脚本形式而不允许COM对象和可执行文件。)

该项的默认值填写执行脚本的路径,如http://www.cnblogs.com/volnet/admin/file:///C:/plug-in.htm

再添加DWORD值,键名为Contexts,其值是由一组二进制标识符通过“位或”的方式叠加的。下表标明它们的含义。

0x01     CONTEXT_MENU_DEFAULT    在默认情况下在页面的任何位置右键可获得该菜单。
0x02     CONTEXT_MENU_IMAGE    只有图像才允许显示该菜单。
0x04     CONTEXT_MENU_CONTROL    form才允许显示该菜单。
0x08     CONTEXT_MENU_TABLE    tables才允许显示该菜单。
0x10     CONTEXT_MENU_TEXTSELECT    选中文本才允许显示该菜单, 也包括选中区域内的图像。
0x20     CONTEXT_MENU_ANCHOR    链接才允许显示该菜单,不包括链接的图像以及图像地图。
0x40     CONTEXT_MENU_UNKNOWN    在以上任何一个提到的可能性以外(这通常不可能)。 

 

好了,下面让我们添加之前的Word Count的代码。

地址不变,我们要求在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt下创建“字数统计”,在默认中添加C:\plug-in.htm,右键新建DWORD值,名称Contexts,类型REG_DWORD,数据0x30(由0x10|0x20得出,表示我们只在选取文本同时也包括链接文本的时候,才显示“字数统计”菜单)。

同理,我们也可以用*.reg的文件来描述上述过程。

Windows Registry Editor Version  5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\字数统计]
" Contexts " = dword: 00000030
@= " E:\\MyCSharpProject\\JavaScript\\plug-in.html "

 

 

至此我们已经将脚本plug-in.htm正确部署到IE中去了。

您是否见过如下图所示的工具栏呢?(IE8中,IE6之前的版本是以图标栏的方式来显示)

之前的步骤并不会让我们添加该选项。但是却为我们完成了很多的工作。下面我们只需要再修改注册表即可。

在对应的GUID下(...\Extension\<GUID>\)添加ButtonText,设置它的值为“字数统计”。

前面还有个漂亮的图标呢!自己制作一个图标或者在系统中找到一个漂亮的图标(*.ICO)或者在*.dll中引用图标资源形如:"example.dll, <your icon name>.ico"即可。在对应GUID下添加Icon,它的值为*.ICO的完整路径。另添加一个HotIcon,方法与Icon一致。二者的区别是HotIcon是指表示在鼠标移到自定义按钮上时,按钮上所显示的图标。而Icon则是正常显示的风格。但是在IE8下似乎没有什么特别的。不知道IE6下是否会有所区别。

有一个可选的Default Visable,在<GUID>下添加Default Visable,设置它的值为“Yes”或“No”。言下之意就是是否默认显示。但是这里要注意一点就是如果通过工具栏的“自定义工具栏”进行了设置,那么该项将无效。

另外有个可选的Lang####,其中####为语言编号。比如简体中文为0x0804(可以查阅这里),则为Lang0804。

在执行命令上,上面提到的三种均被支持(COM对象的调用(如常见的“Gears设置”)、Script调用(如本示例的“字数统计”)、还有Exec的方式。)另外还有Explorer Bar的显示控制(如“Research”)

方式:在<GUID>下添加CLSID或者修改CLSID为:{E0DD6CAB-2D10-11D2-8F1A-0000F87ABD16}指定调用CLSID_Shell_ToolbarExtBand扩展,之前调用的是CLSID_Shell_ToolbarExtExec类。然后添加一个项为BandCLSID,它的值为代显示的Explorer Bar的GUID,如果您没有这么一个Bar,可以先用Research的GUID代替一下:{FF059E31-CC5A-4E2E-BF3B-96E929D65503}。

 

发现一个网站可以自助建IEToolbar:(PDF文件)

http://files.cnblogs.com/volnet/how_make_toolbar_in_ieshow.net.rar 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值