Board logo

标题: 批处理如何添加右键菜单? [打印本页]

作者: wzc02     时间: 2006-9-26 09:32    标题: 批处理如何添加右键菜单?

现在网上有很多绿色版的杀毒软件,性能优异,而且支持在线升级,如果可以添加到右键菜单,能大大加强其可操作性,不知如何编写该批处理?

望各位高手不吝赐教~~
作者: mobo     时间: 2006-9-27 10:30
在注册表中添加一些东西可以实现的,应先研究一下注册表
作者: 3742668     时间: 2006-9-29 02:24
受时间限制,具体代码就不给了,给你个reg脚本你自己看看吧:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\用cmd打开

[HKEY_CLASSES_ROOT\*\shell\用cmd打开\command]
@="c:\\windows\\system32\\cmd.exe %1"
时间关系,未经测试。
作者: pengfei     时间: 2006-9-29 05:01
3742668版主的REG好像是添加文件关联, 而并非添加鼠标右键菜单项.
作者: 3742668     时间: 2006-9-29 06:42


  Quote:
『第 4 楼』:  

3742668版主的REG好像是添加文件关联, 而并非添加鼠标右键菜单项.

No investigation, no right to speak. (没有调查就没有发言权。来自google:http://translate.google.com/translate_t)
尽管中午给出的reg脚本存在一点小问题,漏写了个]符号,但是它仍然是有用的。
经过测试的代码如下:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\用cmd打开\command]
@="c:\\windows\\system32\\cmd.exe %1"
保存为 右键.reg 后导入注册表,然后再右击它试试。
至于转换为bat代码,本版已有过多次讨论。
作者: pengfei     时间: 2006-9-29 07:11
版主说的对, [HKEY_CLASSES_ROOT\*\shell]没注意到星号.
作者: pengfei     时间: 2006-9-29 07:29
鼠标右键菜单项加入后, 第一个字符会出现下划线, 版主有什么办法去掉吗?
作者: vkill     时间: 2006-9-29 07:40
哎,我对注册表不熟
作者: 3742668     时间: 2006-9-29 09:03


  Quote:
『第 7 楼』:  

鼠标右键菜单项加入后, 第一个字符会出现下划线, 版主有什么办法去掉吗?

加下划线是为了快捷键的需要,不过用此方法并不能注册快捷键。如果感觉那个不好看,你可以用类似[HKEY_CLASSES_ROOT\*\shell\用cmd打开(&O)\command]的方法来获得较好的视觉效果。
作者: pengfei     时间: 2006-9-29 09:09
原来如此...
作者: namejm     时间: 2006-9-29 09:26
  不过那个热键似乎并不起作用。另外,如何才能不让下划线显示出来呢?难道只能把下划线换个位置显示而不能删除吗?
作者: pengfei     时间: 2006-9-29 09:31
仔细一看其他鼠标右键菜单项都有下划线. 快捷键为鼠标放到文件上, 当出现菜单时Ctrl+快捷键...

刚才发现原来&字符是定义快捷键的.

[ Last edited by pengfei on 2006-9-29 at 09:42 ]
作者: namejm     时间: 2006-9-29 09:34


  Quote:
Originally posted by pengfei at 2006-9-29 09:31:
仔细一看其他鼠标右键菜单项都有下划线.

  呵呵,并非如此,你装个ACDSee试试,"用ACDSee浏览"那个项目并没有出现下划线。同样的现象在诺盾企业版10里也出现,就是"扫描病毒..."那一项。
作者: fastslz     时间: 2006-9-30 06:18
对杀毒软件来说单纯关联到.exe只是打开程序而已,以卡巴斯基为例要关联到shellex.dll并启动相关服务。
REGEDIT4

[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Kaspersky Anti-Virus]
@="{dd230880-495a-11d1-b064-008048ec2fc5}"
[HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\Kaspersky Anti-Virus]
@="{dd230880-495a-11d1-b064-008048ec2fc5}"
[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\Kaspersky Anti-Virus]
@="{dd230880-495a-11d1-b064-008048ec2fc5}"
[HKEY_CLASSES_ROOT\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved]
"{dd230880-495a-11d1-b064-008048ec2fc5}"="Scan with Kaspersky Anti-Virus"
[HKEY_CLASSES_ROOT\CLSID\{dd230880-495a-11d1-b064-008048ec2fc5}]
[HKEY_CLASSES_ROOT\CLSID\{dd230880-495a-11d1-b064-008048ec2fc5}\InProcServer32]
@="D:\\AVP6OUT\\shellex.dll"
"ThreadingModel"="Apartment"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{dd230880-495a-11d1-b064-008048ec2fc5}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{dd230880-495a-11d1-b064-008048ec2fc5}\InProcServer32]
@="D:\\AVP6OUT\\shellex.dll"
"ThreadingModel"="Apartment"

作者: fastslz     时间: 2006-9-30 06:29


  Quote:
Originally posted by namejm at 2006-9-29 09:34:

 呵呵,并非如此,你装个ACDSee试试,"用ACDSee浏览"那个项目并没有出现下划线。同样的现象在诺盾企业版10里也出现,就是"扫描病毒..."那一项

 对类似ACDSee等浏览软件应该在文件夹右键添加,如下:用 WinRAR 浏览
REGEDIT4

[HKEY_CLASSES_ROOT\Directory\shell\Winrar]
@="用 WinRAR 浏览(&W)"
[HKEY_CLASSES_ROOT\Directory\shell\Winrar\Command]
@="C:\\Program Files\\WinRAR\\winrar.exe %1"
[HKEY_CLASSES_ROOT\Drive\shell\Winrar]
@="用 WinRAR 浏览(&W)"
[HKEY_CLASSES_ROOT\Drive\shell\Winrar\command]
@="C:\\Program Files\\WinRAR\\winrar.exe %1"
   

作者: fastslz     时间: 2006-9-30 06:33
这个貌似WIndows版块讨论的问题了
作者: fastslz     时间: 2006-9-30 07:06
再来个比较有用的
REGEDIT4

[HKEY_CLASSES_ROOT\Drive\shell\CHKDSK]
@="用 CHKDSK 磁盘检查(&K)"
[HKEY_CLASSES_ROOT\Drive\shell\CHKDSK\command]
@="cmd.exe /k color 0b&CHKDSK.exe&color 0e&echo.&echo 检查完毕,任意键退出...&pause>nul&exit"
  
[ Last edited by fastslz on 2006-9-30 at 07:14 ]
作者: fastslz     时间: 2006-9-30 11:59


  Quote:
Originally posted by pengfei at 2006-9-29 07:29:
鼠标右键菜单项加入后, 第一个字符会出现下划线, 版主有什么办法去掉吗?

哦之前还讨论菜单美观的问题,看下面的
REGEDIT4

[HKEY_CLASSES_ROOT\Directory\shell\cmd]
@="命令提示符"
[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""
[HKEY_CLASSES_ROOT\Drive\shell\cmd]
@="命令提示符"
[HKEY_CLASSES_ROOT\Drive\shell\cmd\command]
@="cmd.exe /k \"cd %L\""
  
说明:
(&A) 添加快捷键
Directory 是目录文件夹右菜单
Drive       磁盘设备右菜单
*            所有类型
SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}我的电脑
[HKEY_CLASSES_ROOT\Directory\shell\cmd]红色cmd取值是随便的123也行,command值是必须的
REGEDIT4

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services]
@="服务(&F)..."

"SuppressionPolicy"=dword:4000003c
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73, 00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00, 65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52, 00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00, 32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,00,65,00,73,00,2e,00,6d,00,73, 00,63,00,20,00,2f,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage]
@="管理(&G)..."
"SuppressionPolicy"=dword:4000003c

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,\
  00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00,\
  65,00,20,00,2f,00,73,00,20,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6f,00,\
  6d,00,70,00,6d,00,67,00,6d,00,74,00,2e,00,6d,00,73,00,63,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\控制]
@="控制(&C)..."
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\控制\command]
@="rundll32.exe shell32.dll,Control_RunDLL"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr]
@="设备(&W)..."
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr\command]
@="mmc.exe %%SYSTEMDRIVE%%\\WINDOWS\\SYSTEM32\\devmgmt.msc"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\gpedit]
@="策略(&Z)..."
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\gpedit\command]
@="mmc.exe %%SYSTEMDRIVE%%\\WINDOWS\\SYSTEM32\\gpedit.msc"
  
[ Last edited by fastslz on 2006-9-30 at 12:04 ]
作者: 3742668     时间: 2006-9-30 12:56

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers]

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\Send To]
@="{7BA4C740-9E81-11CF-99D3-00AA004AE837}"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\复制到]
@="{C2FBB630-2971-11D1-A18C-00C04FD75D13}"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\移动到]
@="{C2FBB631-2971-11D1-A18C-00C04FD75D13}"
实用至上。
文件夹上右键试试。
作者: flying008     时间: 2006-9-30 21:16
各位大大和版主真是让人望尘莫及啊……偶对阁下的佩服犹如滔滔江水连绵不绝!……
再请教一个问题,如何用批处理实现在资源管理器中的鼠标右键菜单中添加“反向选择”和“全部选定”两项?要求对文件和文件夹一样可用,这个可是相当实用的哟……

[ Last edited by flying008 on 2006-9-30 at 21:39 ]
作者: fastslz     时间: 2006-9-30 21:19


  Quote:
Originally posted by 3742668 at 2006-9-30 12:56:
[code]
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers]

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\Send To]
...

3742668版主这个其实是网络上的误传,添加了复制移动到文件夹固然方便,但是喜欢听歌的朋友麻烦来了,当右键选中10首.mp3添加到播放列表会连续20次提问是否移动还是复制,选中100首的话麻烦大了,就我的电脑里安装的播放器来说,添加到千千静听,MPC播放器列表都一样,RealPlayer俄而也会出现。
作者: flying008     时间: 2006-9-30 21:44
如何用批处理实现在资源管理器中的鼠标右键菜单中添加“反向选择”和“全部选定”两项?要求对文件和文件夹一样可用,这个可是相当实用的哟……
作者: 不得不爱     时间: 2006-10-1 03:59


  Quote:
Originally posted by pengfei at 2006-9-29 07:29:
鼠标右键菜单项加入后, 第一个字符会出现下划线, 版主有什么办法去掉吗?

可以的!下面的第一个字符就没有下划线!
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\用cmd打开]
@="用cmd打开"

[HKEY_CLASSES_ROOT\*\shell\用cmd打开\command]
@="c:\\windows\\system32\\cmd.exe %1"
[ Last edited by qwe1234567 on 2006-10-3 at 00:40 ]
作者: pengfei     时间: 2006-10-1 04:03


  Quote:
Originally posted by qwe1234567 at 2006-10-1 03:59:

可以的!下面的第一个字符就没有下划线!

还是有下划线.
作者: 不得不爱     时间: 2006-10-1 04:20
哦是忘了打个]再看!

  Quote:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\用cmd打开]
@="用cmd打开"

[HKEY_CLASSES_ROOT\*\shell\用cmd打开\command]
@="c:\windows\system32\cmd.exe %1"


作者: pengfei     时间: 2006-10-1 05:57
怎么就行了, 和3楼的代码差不多, 只是加个句@="在cmd打开"

[ Last edited by pengfei on 2006-10-1 at 06:00 ]
作者: 不得不爱     时间: 2006-10-1 09:02
呵呵,就那句起作用!
作者: fastslz     时间: 2006-10-1 09:40
寒...18楼我已经说的非常详细了怎样去掉那个。
qwe1234567版主的代码只关联到文件,部分扩展名CMD是无法打开的,18楼的代码
只关联到文件夹和驱动器,cmd.exe /k \"cd %L\也就是命令提示符从这里开始,\"cd %L\"代码在CMD里是错误的,可在注册表里就是代表当前文件夹。

TO flying008

  Quote:
Originally posted by flying008 at 2006-9-30 21:16:
各位大大和版主真是让人望尘莫及啊……偶对阁下的佩服犹如滔滔江水连绵不绝!……
再请教一个问题,如何用批处理实现在资源管理器中的鼠标右键菜单中添加“反向选择”和“全部选定”两项?要求对文件和文件夹一样可用,这个可是相当实用的哟

鼠标右键菜单中添加“反向选择”和“全部选定”两项,只靠修改注册表实现不了,就是借助其它软件恐怕很难做到。
作者: 3742668     时间: 2006-10-1 11:59


  Quote:
3742668版主这个其实是网络上的误传,添加了复制移动到文件夹固然方便,但是喜欢听歌的朋友麻烦来了....

这就是个见仁见智的问题了,或许有些人不喜欢在右键中使用“复制到,移动到”功能,又或者有人习惯从播放器中添加曲目而不喜欢在右键中加入太多的东东。不过这些都不重要,重要的是多种方案在此,各取所需吧。

  Quote:
如何用批处理实现在资源管理器中的鼠标右键菜单中添加“反向选择”和“全部选定”两项?要求对文件和文件夹一样可用,这个可是相当实用的哟……

关于这两个功能,虽然暂时无法纯粹地通过修改注册表来实现,但是注册表+脚本,相信还是能够实现。(个人觉得还是用ctrl+A比较爽)
Part 全选:

  Quote:
1.保存下面的脚本为 *.reg,导入。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\全选]
@="全选(&z)"

[HKEY_CLASSES_ROOT\*\shell\全选\command]
@="wscript.exe d:\\全选.vbs"
2.保持下面的代码为 d:\脚本.vbs
CreateObject("WScript.shell").SendKeys "^a"
time关系,没有把两个脚本用一个批处理来完成,自己搞定吧。

part 反选:

  Quote:
1.注册表部分:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\反选]
@="反选(&x)"

[HKEY_CLASSES_ROOT\*\shell\反选\command]
@="wscript.exe d:\\反选.vbs"
2.vbs部分:
With CreateObject("WScript.shell")
    .SendKeys "%e"
    Wscript.Sleep 500
    .SendKeys "i"
End With

ps:虽然基本上实现了“全选”与“反选”的功能,但是在“反选”部分,仍然存在不少意外,所以建议慎用。
作者: fastslz     时间: 2006-10-1 13:13
3742668版主的2个vbs学到了^_^

SendKeys "^a"             Cttrl+A
SendKeys "%e"            
Wscript.Sleep 500         
SendKeys "i"                Ait+E 延时500微秒 + I

作者: 3742668     时间: 2006-10-2 11:22
关于“全选”的问题。
前面给出的reg脚本对于全选比较不人性化,因为必须鼠标点击文件才会出现菜单,今天发个新的,在空白处点右键就可以弹出全选的选项。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\全选]
@="{00000000-0000-0000-0000-000003742668}"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000003742668}]

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000003742668}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
  64,00,6f,00,63,00,76,00,77,00,2e,00,64,00,6c,00,6c,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000003742668}\Instance]
"CLSID"="{3f454f0e-42ae-4d7c-8ea3-328250d6e272}"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000003742668}

\Instance\InitPropertyBag]
"method"="ShellExecute"
"Param1"="E:\\脚本\\vbs\\全选.vbs"
"command"="全选(&A)"
"CLSID"="{13709620-C279-11CE-A49E-444553540000}"
vbs脚本部分代码不变,注意reg脚本中有效数据倒数第三行的路径更改为你脚本所在的路径。
作者: flying008     时间: 2006-10-2 22:44
3742668版主的功力真是让偶仰视!!!
偶其实最想要的是就是在资源管理器中进行操作时,点击文件或文件夹后再在右键中出现“反向选择”这一项的,至于全选可有可无,因为可以CTRL+A的,
之所以想在右键中实现这一功能,是因为在2年前一个朋友的XP系统上亲眼看到过有这样的功能,当时未曾深究,现在已找不到了,所以才来请教各位大大,估计他的系统肯定是经过处理后封装的,因为凭他的功力,自己是不能实现这样的效果的,所以还请各位出招……谢谢……
HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers
对于文件和文件夹的通用上下文菜单操作一般是在上面的注册表项下出现的吧?
作者: NeoASlan     时间: 2006-10-6 12:59
效果未达到预期目标。。。
作者: chenjide     时间: 2007-7-9 20:32
请问3742668版主
怎么在空白处点右键多搞几个选项

我的空白处点右键菜单原来有项 "显示/隐藏系统文件及扩展名"

本想加个 "全选" 的但是显示不出来  要删掉"显示/隐藏系统文件及扩展名" 这项才行

因为找不到资料,就跟贴了