使用鼠标右键菜单能有效简化操作,可是面对Windows菜单那死板的面孔,不如我们自己来――个性化右键菜单DIY!
一、为所有文件建立通用菜单
运行Regedit,打开“HKEY_CLASSES_ROOT\?\shellex\
ContextMenuHandlers”分支,可以看到“Winzip”主键,这就是安装Winzip时自动添加的右键菜单。如果你想再添加其他的选项,可以进行如下操作:
1.在“HKEY_CLASSES_ROOT\?\
shell”主键(如果没有,可以在HKEY_CLASSES_ROOT\?下新建一个名为“shell”的主键)下新建一个名为“XXX”的主键(XXX就是右键菜单中将要显示的文字,这里假设为“用记事本打开”)。
2.在“用记事本打开”主键下新建名为“command”的主键,修改右边的默认键值为“c?\windows\notepad.exe %1”即可。该修改不需重启,立即生效。
这样,在所有文件的右键菜单中就有了“用记事本打开”这一选项,在打开没有与记事本相关联的文件时,就不用再在“打开方式”中费力地寻找了。
3.如需再添加其他的选项,重复步骤1和2即可。
二、为某种格式文件建立单独的关联
有时我们不想为所有文件而只想为某一种文件格式建立关联,比如你制作网页,经常需要用不同的程序修改检验你制作的Html文件,那么,我们可以单独为Html格式的文件建立多种程序的关联。
1.运行Regedit,打开“HKEY_CLASSES_ROOT”,在该分支中找到“htmlfile”主键。
2.在“htmlfile”主键下建立“shell”主键(如果已经存在,可以省略这一步)。
3.在“htmlfile\shell”主键下建立一个主键,如果你想用Dreamweaver编辑Html文件,可将该键命名为“用Dreamweaver打开”。
4.在“用Dreamweaver打开”主键下再新建“command”主键,修改右边默认键值为“C?\Program Files\Macromedia\Dreamweaver 3\Dreamweaver.exe %1”(程序的路径根据你自己的路径修改)。
现在右键单击Html文件,看看右键菜单中出现了什么?同样,我们还可以在“htmlfile\shell”主键下建立“用Editplus编辑”、“用Netscape浏览”、“用Opear浏览”等关联。现在我们可以方便地修改、浏览自己编辑的网页了。其他格式的文件也可照此建立多种文件关联。以上操作只对你选择修改的文件格式生效,不会对全局产生影响。
三、修改驱动器和文件夹的右键菜单
1.修改驱动器菜单
打开“HKEY_CLASSES_ROOT\
Drive\shell”主键,可以看到“Browse with ACDSee”、“find”等主键,根据自己的需要添加或删除主键即可(只对驱动器有效),步骤与前边的修改基本一样,不再多说。
2.修改文件夹右键菜单
文件夹菜单的修改比较复杂,涉及到两个主键“Directory”和“Folder”(均位于HKEY_CLASSES_ROOT下)的修改。其中修改“Folder”主键后对驱动器右键菜单同样有效,如在“Folder\shell”主键下新建“XXX”的主键,则同时会在驱动器的右键菜单中出现“XXX”选项,删除也是如此。要删除驱动器右键菜单中的“Winzip”选项,只要删除“HKEY_CLASSES_ROOT\
Drive\shellex\DragDropHandlers”下的“Winzip”主键即可,而要删除文件夹菜单中的“Winzip”项,还要删除“HKEY_CLASSES_ROOT\Directory\
shellex\DragDropHandlers”下的“Winzip”主键。如果只想对文件夹的菜单进行修改,只要对“Directory”主键进行修改即可,不会对驱动器有影响。
前段时间一直都在做了些windows shell的编程,包括添加文件属性页和修改右键菜单。特别是右键菜单,通过从注册表中得到路径使右键菜单项调用自己的.exe应用程序来实现功能的。可是一直有一个问题在困扰着我,就是我电脑上右键菜单上很多其他的项的功能都不能使用了,包括:winrar,卡巴斯基扫描,打开方式,svn等。
项目结束的时间越来越近,随着其他bug的排除,这个问题显得越发的严重了。总不能在最终用户哪里安装我们的软件使得自己的电脑其他功能不能使用吧。今天下午就向baidu请教了下,发现问题其实比较好解决,终于解决了这个问题。
修改单个文件右键菜单项其实很简单:
只需要在[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers]下面建立新的项,然后在给这个新的项赋值为shell程序的GUID,就可以调用shell扩展应用了。当然前提是需要将shell扩展程序dll安装注册,复制到assembly下。接下来在shell扩展中找实际进行操作的exe程序,就可以完成需求了。
比如,我的应用逻辑是由应用程序jessie.exe来实现的,我是在注册表中指定了这个应用程序的路径,在shell扩展中通过读注册表中指定的项,找到应用程序。在注册之后将生成的dll文件复制到assembly下,注销之后就可以点击单个文件的右键菜单中自定义项来实现功能。
修改文件夹的右键菜单项有两种方式:
[HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\rightmenu]和[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\rightmenu]都可以在文件夹的右键菜单中增加自定义的项。两者的区别是:后者对驱动器右键同样有效。
一开始我使用的就是后者,这就是使得我的其他右键菜单项失效的原因。只要将后者删除,修改在Directory的项,也可以实现功能,而且我的其他项就有效了。
现在存在的问题是,在右键菜单中添加了自定义项,其他好多功能压根就不显示了。这个还没有解决,估计是因为自己修改注册表打乱了其他软件安装时填写注册表中的信息。
关于注册表中关于右键菜单的项,很多就不知道是什么意思,功能已经实现,现在的这个bug是可以接受的,至少比以前好了很多,还是小得意一下下