荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: uniquer (=吻火=), 信区: WinNT
标  题: Windows 右键菜单大揭密 zz
发信站: 荔园晨风BBS站 (2004年09月28日16:04:23 星期二), 站内信件

------------------------------------------------------------------------
--------

在Windows系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜
单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对
文件的某些操作。不知道你是否对它感兴趣?是否想对它作一番改头换面,做出有
自己特色的右键菜单?不用着急,看完本文的大揭密,你将成为这方面的高手!
修改右键菜单应该在注册表中,具体的说,是在HKEY_CLASSES_ROOT根键下(这里
可是右键菜单中所有命令的根源哦!)。展开该根键,其下的子键主要有两种:扩
展名键(.+扩展名)和类定义键(如图1)。一般地说,只要是在windows系统中
已注册过的扩展名,在HKEY_CLASSES_ROOT下均有“·该扩展名”子键 ,记录该扩
展名的一些信息,对某种特定类型的文件的右键菜单的修改,便是在该键或“扩展
名file”键下的操作。

一、在所有的文件右键菜单中加入命令
如果你的系统上安装有Winzip、UltraEdit等,当你对任一文件点右键时,都会有
“Add to zip”、“UltraEdit-32”等命令(当然,Winzip稍有不同,我将在后
面讲到)。它的添加方法是:

1.打开“HKEY_CLASSES_ROOT\*”;

2.在其下新建“shell\命令\command”分支,再将command的键值设为执行该命令
时所用的可执行程序的绝对路径,并在其后加“%1”即可。
例:在“HKEY_CLASSES_R
OOT\*”下新建“shell\用写字板打开\command”子键,将command的键值设为“
c:\windows\notepad.exe %1”,就会在右键菜单中出现“用写字板打开”的命令
了(如图2)。
说明:
1. 要删除该类命令,只需将“命令”子键删除即可;
2. 有的人或许会问他按我写的去做,但是得到的为何与我的有一些不同,这就是
我的命令里有快捷键(N),只要在“用写字板打开”后加入“(&N)”即可


二、在特定文件类型的右键菜单中加入命令
刚才说到了Winzip这个软件,对普通的文件类型,它的右键菜单中有“Add to
zip”,但是对它所支持的压缩文件类型,如*.zip、*.cab、*.rar在其右键菜
单中有“Open with Winzip”、“Extract to”、“Extract to folder”、“
Create Self-Extractor(.EXE)” 等命令,对于自解压性安装文件(如
OICQ99b),其右键菜单中有“Run with Winzip”命令。下面是特定文件类型的右
键菜单的命令添加方法(以在mp3文件的右键菜单中加入Play with winamp为例)


1.打开“HKEY_CLASSES_ROOT\mp3_auto_file”主键;

2.在其下新建“shell\Play with Winamp(&P)\command”,将command的键
值设为“C:\Program files\winamp\winamp.exe %1” 。
说明:当有多个软件可以播放mp3文件时,我们可以在右键菜单中添加多条命令,
如加入“Play with Unreal”等命令,但是我们如何将某一条命令定义为默认操作
(即右键菜单中的黑体命令)呢?
你一定会说,很简单的事情吗!将mouse移向一mp3文件,在按右键的同时按shift
,在右键菜单中选“打开方式“便可更改,但是这是错误的,不信你试试看,这样
只有在右键菜单中选“打开”时才会用你所选择的程序来打开它,否则,它仍旧一
如继往。因为它的默认操作不是“打开“这条命令。真正的方法是将shell的默认
键值改为你所想执行的命令,例如将shell的键值改为“Winamp”,效果如图3所示

还有,不知道你发现了没有,我在前面的例子中用的是“Play with Winamp”命令
,而在这里用的是“Winamp”,是不是有点不对应呢?说到这里,真是让我心酸,
本来我在txt文档中用shell进行默认操作的转换时(转换open与print)挺成功的
,但是一转换“Play with Winamp”与“Play with Unreal”便失败,总是转换不
过来,最后才明白这可能是“瘟酒吧”的一个bug,它要求转换时主键的键名为单
个字符串时才有效。对汉字与英文的组合也有效,不过中间可不能有空格(不知道
这是否与我的Win98是D版有关?)。
如果你认为上面的方法不太方便且过于复杂,其实在Windows中还提供了不用操作
注册表的更为方便安全的方法:打开一个文件夹,选“查看/文件夹选项/文件类型
”, 在这里你将会找到所有已经注册的文件类型,选择“mp3文件/编辑”,看到
操作下面的“新建”、“编辑”、“删除”、“设为默认值”这四个按钮没有?不
用我再教你了吧!嘿嘿。

三、在所有的文件夹右键菜单中加入命令
如果你用过Acdsee这个软件,就会发现在文件夹的右键菜单中总有“Browse
with acdsee”这一命令,同类的还有Pc-cillin中的Trend Pc-cillin 98命令,
下面再该类命令的添加方法:

1.打开“HKEY_CLASSES_ROOT\diretory\shell”主键;

2.在其下新建“命令\command”……下面不用再说了吧!
说明:1.如果你细心一下的话,你将会发现其实在驱动器的右键菜单中,也有“
Browse with acdsee” “Trend Pc-cillin98”等命令,驱动器也是特殊的文件
夹,但是通过上面的方法是无法在驱动器的右键菜单中加入命令的。如果要在其中
加入命令,须对“HKEY_CLASSES_ROOT\drive\shell”主键进行操作;

3.在“HKEY_CLASSES_ROOT”主键下还有一个folder子键,顾名思义,对它的操作
将影响所有的文件夹,包括回收站,切记切记!(图4是在回收站中添加了“
Browse with acdsee”命令)

四、在所有的文件与文件夹的右键菜单中加入命令
如果你自己开发了一个程序,它的操作对象是文件和文件夹,因此你想在所有的文
件和文件夹的右键菜单中加入特定的命令进行操作,这就得看下面的了。
打开“HKEY_CLASSES_ROOT\AllFilesystemObjects”主键,在其下新建“shell\命
令\command”,以下操作同前。
需要指出的是这只是一种解决方法,如果大家看我所抓下的图,会发现总有一个“
IconView”命令,出现在所有的文件和文件夹的右键菜单中,但是这可不是用这种
方法形成的,不妨作一下对比(如图5),这条命令是通过该软件中的应用程序扩
展库iv_shext.dll扩展而来,因此它出现在右键菜单的中部。而不是在顶部 。(
什么?让我讲一下这种方法?)由于这种方法涉及到编程方面的内容,限于篇幅和
主题,我就不讲这种方法了(嘘!小声点,其实我也是不会。)

五、一些特殊命令的添加与删除

1.资源管理器
在Windows系统中,普通文件夹、驱动器、回收站等的右键菜单中都有“资源管理
器“命令,如果你只想在驱动器中保留该命令,可以先在“
HKEY_CLASSES_ROOT\folder\shell”主键中删除explore子键,然后在“
HKEY_CLASSES_ROOT\drive\shell”主键中新建“explore\command”子键,令
commmand的键值为“C:\WINDOWS\Explorer.exe/e,/idlist,%I,%L”怎么样,成
功了吧!

2.清空回收站
在Windows系统中,只有在回收站的右键菜单中才有“清空回收站”的命令,是不
是太不方便了呢,好,我们可以经过一番改造,让所有的文件菜单中都有“清空回
收站”的命令,follow me!
我们的思路是先找出“清空回收站”这个命令的来源,然后将其照搬到“
HKEY_CLASSES_ROOT\*”下即可。好,还是先来找吧,我找呀找,终于找到了!(
图6)——再教你一招,就是一些特殊的命令(特别是第三方提供的软件),都是
由应用程序扩展库(.DLL)扩展而来,在注册表的“
shellex\ContextMenuHandlers”中便能找到它的痕迹。 我们打开“
HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}
\shellex\ContextMenuHandlers”,可以发现其下有一名为“{645FF040-5081-
101B-9F08-00AA002F954E}”的子键,这就是“清空回收站”命令的根源了。
找到了根源,就容易多了,在“HKEY_CLASSES\ROOT\*
\shellex\ContextMenuHandlers”下新建一键名为“{645FF040-5081-101B-
9F08-00AA002F954E}”的子键,怎么样,够酷吧!


3.新建命令的子命令的添加与删除
不知道有没有遇到这种情况:你经常自己手工编写网页,在单位的机器上的新建命
令中有“新建html文档”的命令,但是你的机器上却没有,还有,随着各种软件的
不断增加,你的新建命令弹出子命令的时间越来越长,够呛的吧! 不要紧,不用
急,让我来帮你把该出来的叫出来,不该来的让它回去!
打开“HKEY_CLASSES\ROOT\.htm”,添加一主键shellnew,然后新建字符串值
NullFile ,键值为空,你现在再对桌面点右键,看看新建,是不是多了一点什么
? 至于删除,想各位不致让我多说了吧!

4.剪切、复制、粘贴等命令的添加
注意,我只是谈剪切、复制、粘贴等命令的添加,也就是说对右键菜单中没有这些
命令的某些对象,可以添加,而对那些本来有就这些命令的对象,就连删除它们,
我都无能为力。
好,我现在以回收站为例,来进行剪切、复制、粘贴等命令的添加,具体地说,有
“打开、剪切、复制、粘贴、重命名、删除、属性”等命令的添加。 先打开“
HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}”主键
,你会发现有“shellfolder”子键,在该子键下新建二进制值attributes,它的
键值就决定了这些命令在右键菜单中的显示与隐藏。具体如下:
命令 键值
打开 00 00 00 20
剪切 02 00 00 00
复制 01 00 00 00
粘贴 00 01 00 00
删除 20 00 00 00
重命名 10 00 00 00
属性 40 00 00 00
如果你要显示某些命令,只需将该命令所对应的键值相加,结果作为attributes的
键值即可。例如:当attributes值为00 00 00 00(默认)时,将不显示以上命令
,当为73 01 00 20时,将显示所有的命令(如图7)。现在好了,可以将“回收站
“改为你所想改的名称了,还可以将“废物”粘贴到回收站了(不过我看这倒没有
多大的作用,是吗?)

5.“发送到”及其菜单
有的文件夹(如我的文档)的右键菜单中没有“发送到”这条命令,我们可以给它
添加上去,方法可以参考“清空回收站”命令的添加方法。就是打开“
HKEY_CLASSES_ROOT\CLSID\{450D8FBA-AD25-11D0-98A8-
0800361B1103}\shellex\ContextMenuHandlers”,在其下新建“{7BA4C740-
9E81-11CF-99D3-00AA004AE837}”子键,就可以了。
至于“发送到“的菜单,是不需要在注册表中对其进行操作的,它的根源是“C:
\windows\SendTo”这个文件夹,你只需在这个文件夹内新建一个快捷方式,让它
指向你所想要发送到的文件夹,就OK了(如图8,其中backup,software为新建的
指向文件夹的快捷方式)。

6.查找
在Windows系统中,普通文件夹及驱动器的右键菜单中有“查找……”这条命令,
如果我们要在回收站中寻找误删除的文件,而此时回收站中的文件又多的话,我们
就可以在回收站的右键菜单中加入“查找……”这条命令。具体方法可以参考2,
5。只是需要新建的子键为“{61E218E0-65D3-101B-9F08-061CEAC3D50D}”。
只不过命令变成了“文件或文件夹……”(如图9)
讲了这么多,你现在应该懂如何修改右键菜单了吧?以上所讲均在Windows98中文
版下通过。最后祝大家都能把自己的右键菜单改得别具一格,得心应手!!


--

             每当有人赞美我的时候 我总是感到浑身不安

                                     因为我觉得他们赞美的不够


※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.55.192]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店