右键上下文菜单搬运加使用Quicker动作
菜单项基本结构示图加效果图
以下是桌面背景的右键菜单演示
注册表中右键菜单路径
- 文件类型的右键菜单路径:计算机\HKEY_CLASSES_ROOT\文件扩展名\shell
- 例如:对于.txt文件类型的右键菜单路径为:计算机\HKEY_CLASSES_ROOT\.txt\shell
- 系统所有文件的右键菜单路径为:计算机\HKEY_CLASSES_ROOT\*\shell
- 系统驱动器的右键菜单路径:计算机\HKEY_CLASSES_ROOT\Drive\shell
- 系统所有目录的右键菜单路径:计算机\HKEY_CLASSES_ROOT\Directory\shell
- 系统所有文件夹的右键菜单路径:计算机\HKEY_CLASSES_ROOT\Folder\shell
- 系统所有文件和文件夹的右键菜单路径:计算机\HKEY_CLASSES_ROOT\AllFilesystemObjects\shell
- 计算机桌面背景的右键菜单路径:计算机\HKEY_CLASSES_ROOT\DesktopBackground\Shell
- 系统文件夹或桌面背景的右键菜单路径:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell
Folder 的范围很大,它包括了系统中所有可以双击打开并查看其内容的「文件夹」项目,包括「计算机」、「回收站」、「控制面板」等这些虚拟文件夹,以及「计算机」中的所有磁盘驱动器,以及其中的任何文件夹 (Directory)。
Directory 则必须是存在于物理磁盘上的一个「文件夹」项目,而「计算机」中的所有磁盘驱动器,如「本地磁盘 (C:)」则不认为是 Directory。
Windows 系统中目录 (Directory) 与文件夹 (Folder) 的区别 - xenophōn - 博客园 (cnblogs.com)
菜单项键说明(示意图有演示)
- (默认):指定右键菜单项显示的文本。这是右键菜单项的名称,将在右键菜单中显示给用户。若未设定则使用注册项名称
- MUIVerb:是一个在注册表中用于定义右键菜单显示文本的值。若未设定则使用默认项文本。
- icon:指定右键菜单项显示的图标。可以指定一个图标文件的路径或者一个系统图标的索引。
- extended:指定右键菜单项显示在扩展的右键菜单中。通常是通过按住Shift键触发。
- SeparatorAfter:是一个在注册表中用于定义右键菜单项之后添加分隔线的值。DWORD(32位整数)值
- SeparatorBefore:是一个在注册表中用于定义右键菜单项之前添加分隔线的值。DWORD(32位整数)值
- CommandFlags:DWORD (32位) 值,设置值为16进制的8时,该项将显示为分隔线。位置根据注册表项默认排序。
- ExtendedSubCommandsKey(扩展子命令键)是一个在注册表中用于定义扩展菜单的子命令的键路径。它用于指定在上下文菜单中显示的扩展命令的子命令的注册表位置。
- position:指定右键菜单项在右键菜单中的位置。Position=Top | Bottom
- LegacyDisable:DWORD (32位) 值 ,如果该键存在,则右键菜单项将关闭不显示。经测试,同样作用的还有ProgrammaticAccessOnly。
- OnlyInBrowserWindow:如果该键存在,则右键菜单项将只在资源管理器显示(从原本就能显示变成改成仅在这里)。
- HasLUAShield:在菜单项上显示UAC盾牌图标。若设有图标,则在设置的图标右下角显示小一些的UAC盾牌。
- ShowAsDisabledIfHidden:用于在右键菜单项在被设置为隐藏时,将显示为禁用状态,用户无法选择该选项。
- HideBasedOnVelocityId:DWORD值,设置值为十六进制639bc8时,隐藏该菜单项。可用于配合ShowAsDisabledIfHidden使用。
- SubCommands:该设置也是创建多级菜单,与ExtendedSubCommandsKey不同的,SubCommands是可以单独将菜单项添加进子菜单,注意事项看以下;除此引用方式,也可以不输入值引用,在建立这个字符键后,在该项建立子项shell,在这个shell下建立新的菜单项。
以上除指定DWORD值的,都是字符串值。
注意:SubCommands命令使用,在以下指定路径建立命令,将项名复制到SubCommands,如果有多个命令则项名直接以分号“;”隔开。(个人试验,使用SubCommands的时候,如果项的默认值(上面菜单项说明第一项)输入了值则不会显示该设置的菜单,即使改回也不会再显示该设置的子菜单,因此设置名称还是用MUIVerb更好)详情看说明.
路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell
GPT对该路径的作用回复:注册表中的一个键,用于存储与 Windows 资源管理器(Windows Explorer)相关的命令选项。这个键包含了一系列子项和注册表值,用于定义在资源管理器中右键菜单中显示的命令和操作选项。通过修改这些子项和注册表值,可以自定义资源管理器中的右键菜单,添加、删除或修改命令选项,以满足个人或组织的特定需求。
右键点击菜单后按键盘调用指定项方法
- 将菜单项的名称后面用"&"符号进行标记,并在标记符后上加字符,表示快捷键的字符。
- 例:示例名称(&L) 即右键打开菜单后,按L键即可调用"示例名称"菜单项
示意图:
- 设置名称以及添加分隔栏
- 创建独立分割线(CommandFlags)(仅试验因此未建command子项)
- 显示在扩展的右键菜单(按shift再右键才会显示菜单项),最好亲自试试
- 多级菜单示例一,使用ExtendedSubCommandsKey (使用子菜单栏,父菜单项就不需要再添加command命令子项了)
- 位置视图
- 不显示示意,可对比上图,一目了然
- 菜单按键盘调用,建议亲自试试
- 菜单项能在桌面和文件夹都能显示时,让其仅在资源管理器显示
- 菜单项显示盾牌图标
- 禁用不隐藏菜单项
- 多级菜单示例二,使用SubCommand,上面的示例是ExtendedSubCommandsKey
-----------这个都可以嵌套使用,也是菜单项。
- 多级菜单示例三,还是使用SubCommand
这是试验效果
命令项参数说明(示意图有演示)
示例讲解:
例:"C:\Program Files\Quicker\QuickerStarter.exe" "runaction:40892229-7872-4c75-a729-99dcb33f529c?""%V"""
quicker动作调用方法来自于 从外部启动Quicker动作 - Quicker (getquicker.net)
参数多加引号是为了防止空格---其中"%V"代表的是当前背景所在路径或者选中文件或文件夹路径,外面再加引号就是防止路径存在空格(带空格没用引号包括会有quicker的错误提示窗),虽然因此传入参数也带有了引号(不理解),总之好用就行。
常用参数:
- %0,%1:选中文件/文件夹路径
- %D :选中文件/文件夹的路径
- %L :同%1,固定长路径的选中文件/文件夹路径
- %V :选中文件/文件夹情况下是选中路径,未选中则是当前文件夹路径
- %W :当前所在的父目录路径
"%D"必须选中文件/文件夹运行,不然桌面重启,%0,%1,%L未选中文件/文件夹则是报错
不知道怎么将多选的对象路径一次性传递给动作,怎么搞都是选中多少个文件就运行多少次命令。。。一个文件针对一次命令的参数
快捷方式参数:
- "%*":所有参数
- "%2"—"%9":第二到第九个参数
打开快捷方式文件的属性窗口,在目标栏空一格输入的任何字符,可以通过以上快捷方式参数获取。
同时常用参数的%0,%1,%D,%L,%V在选中快捷方式的情况下获取的就是目标里文件路径的值
%W则是获取起始位置的值。不明白看下面示例。
示意图:
- 常用参数示意(用不同地址使用相同子菜单来对照)
以上是公用菜单项,以下分别是目录背景地址以及目录地址引用上面菜单项
GIF示意(本来想各个参数录一起的,结果录出来缺帧少时,因此就只录个%v)
- 快捷方式参数示意图
%*获取的是后面添加的全部字符,而%2-%9则是这全部字符以空格隔开的每一个部分。
例:在包括前面应用路径的情况下以空格分开,“试验”是第三个,所以%3获取的字符就是“试验”,以下是动图演示
- 选中快捷方式下常用参数的变化,因为%V,%1,%0,%L,%D,在选中文件情况下效果一样,所以这里仅用“%V”和“%W”对比。
参考来源:
基本个人感觉有点用的都列在下面:
FlowGPT - 动作信息 - Quicker (getquicker.net)
创建快捷菜单处理程序 - Win32 apps | Microsoft Learn
使用 ExtendedSubCommandsKey 注册表项创建级联菜单 - Win32 apps | Microsoft Learn
如何采用谓词选择模型 - Win32 apps | Microsoft Learn
使用 SubCommands 注册表项创建级联菜单 - Win32 apps | Microsoft Learn
How to Add Any Application Shortcut to Windows Explorer's Context Menu (howtogeek.com)
Windows注册表的 %* %0 %1 %2 %D %L %V %W ,表示路径的有 %1 %D %L %V %W_kfepiza的博客-CSDN博客
How to Clean Up Your Messy Windows Context Menu (howtogeek.com)
Easily Add Program Shortcuts to the Desktop Context Menu in Windows 7 (howtogeek.com)
Win10添加右键在此处打开命令行 - ssooking - 博客园 (cnblogs.com)
Win10添加右键打开cmd和Powershell窗口(管理员/非管理员)_cxrsdn的博客-CSDN博客
关于电脑注册表regedit自定义管理右键菜单选项实例(删除增加)_꯭那꯭个꯭人꯭不꯭就꯭是꯭我꯭的博客-CSDN博客
定制右键功能,看这一篇就够了 - janbar - 博客园 (cnblogs.com)
上下文菜单 - 如何将上下文菜单项添加到文件夹的 Windows 资源管理器 - 堆栈溢出 (stackoverflow.com)
自学编程独立开发最强大的右键菜单管理程序!_哔哩哔哩_bilibili
增加系统右键菜单,执行bat文件 - jack_Meng - 博客园 (cnblogs.com)
仅搬运常用简单的,毕竟其他高深我也不懂,研究不了那么深。后续若有新的了解可能会再添加。
我是边学边写的,所以布局有些杂乱,因为用不到所以通过搞这个让自己有动力划水学。😂
虽然想等搞个动作再分享,但是我怀疑搞动作可能会花得有点久。所以先发了再说,或许哪天就不想搞了。
其他右键菜单项Command命令示例(我用JS被火绒拦截了,所以干脆只留vbs,不留JS的了,以下均试验可用)
- 复制文件路径:cmd /c echo "%V " | clip
- 用记事本打开: notepad "%1"
- 复制文件名-属性获取:mshta vbscript:CreateObject("Wscript.Shell").Run("cmd /c echo "&CreateObject("Scripting.FileSystemObject").GetFile("%1").Name&" | clip",0,false)(window.close)
- 复制文件名-直接获取:mshta vbscript:CreateObject("Wscript.Shell").Run("cmd /c echo "&CreateObject("Scripting.FileSystemObject").GetFileName("%1")&" | clip",0,false)(window.close)
- 复制文件名-不含扩展名:mshta vbscript:CreateObject("Wscript.Shell").Run("cmd /c echo "&CreateObject("Scripting.FileSystemObject").GetBaseName("%1")&" | clip",0,false)(window.close)
- 正则提取复制文件名第一串数字:mshta vbscript:"<html ><title>myzam</title><body>hello world <script language=""vbscript"">Dim regex, Filename : Set regex = New RegExp : regex.Global = False : regex.Pattern = ""\d+"" : Filename = CreateObject(""Scripting.FileSystemObject"").GetBaseName(""%1"") : CreateObject(""Wscript.Shell"").Run ""cmd /c echo "" & regex.Execute(Filename)(0).Value & "" | clip"", 0, False:window.close </script></html>"
查找发现可用于命令的参考(本来想正常搞几句命令,结果一路报错,不得不又搜索学习,从而积攒链接……):
在命令行中执行VBS或者JS代码、powershell代码 - jack_Meng - 博客园 (cnblogs.com)
如何正确的使用mshta命令 - 开发技术 - 亿速云 (yisu.com)
VBS基础篇 vbscript Sendkeys模拟键盘操作_vbs_脚本之家 (jb51.net)
VBScript - 弹出“文件选择对话框”方法大全! - Bitssea - 博客园 (cnblogs.com)
VBS脚本编程(9)——正则表达式 - Ulysses~ - 博客园 (cnblogs.com)
代码中的特殊字符 - Visual Basic | Microsoft Learn
关于注册表命令的链接
regedit 命令行参数_regedit /e_Blue_Dream_的博客-CSDN博客
regedit.exe的命令行使用_oBuDaoWeng的博客-CSDN博客
大佬汇总的外部命令,感觉应该能用在右键菜单.
windows 运行命令大全 - Quicker (getquicker.net)