右键上下文shell菜单加使用Quicker动作演示

瞑空凌 2023/7/26 发布 · 2023/7/26 更新 · 2725 次阅读

右键上下文菜单搬运加使用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)

菜单项键说明(示意图有演示)

  1. (默认):指定右键菜单项显示的文本。这是右键菜单项的名称,将在右键菜单中显示给用户。若未设定则使用注册项名称
  2. MUIVerb:是一个在注册表中用于定义右键菜单显示文本的值。若未设定则使用默认项文本。
  3. icon:指定右键菜单项显示的图标。可以指定一个图标文件的路径或者一个系统图标的索引。
  4. extended:指定右键菜单项显示在扩展的右键菜单中。通常是通过按住Shift键触发。
  5. SeparatorAfter:是一个在注册表中用于定义右键菜单项之后添加分隔线的值。DWORD(32位整数)值
  6. SeparatorBefore:是一个在注册表中用于定义右键菜单项之前添加分隔线的值。DWORD(32位整数)值
  7. CommandFlags:DWORD (32位) 值,设置值为16进制的8时,该项将显示为分隔线。位置根据注册表项默认排序。
  8. ExtendedSubCommandsKey(扩展子命令键)是一个在注册表中用于定义扩展菜单的子命令的键路径。它用于指定在上下文菜单中显示的扩展命令的子命令的注册表位置。
  9. position:指定右键菜单项在右键菜单中的位置。Position=Top | Bottom  
  10. LegacyDisable:DWORD (32位) 值 ,如果该键存在,则右键菜单项将关闭不显示。经测试,同样作用的还有ProgrammaticAccessOnly
  11. OnlyInBrowserWindow:如果该键存在,则右键菜单项将只在资源管理器显示(从原本就能显示变成改成仅在这里)。
  12. HasLUAShield:在菜单项上显示UAC盾牌图标。若设有图标,则在设置的图标右下角显示小一些的UAC盾牌。
  13. ShowAsDisabledIfHidden:用于在右键菜单项在被设置为隐藏时,将显示为禁用状态,用户无法选择该选项。
  14. HideBasedOnVelocityId:DWORD值,设置值为十六进制639bc8时,隐藏该菜单项。可用于配合ShowAsDisabledIfHidden使用。
  15. 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)

sublime添加右键菜单_葵-托利的博客-CSDN博客

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)

[分享]批处理调用mshta执行vbs代码的方法 - BAT求助&讨论 - 批处理之家 BAT,CMD,批处理,PowerShell,VBS,DOS - Powered by Discuz! (bathome.net)

wscript | Microsoft Learn

VBScript - 弹出“文件选择对话框”方法大全! - Bitssea - 博客园 (cnblogs.com)

VBS脚本编程(9)——正则表达式 - Ulysses~ - 博客园 (cnblogs.com)

代码中的特殊字符 - Visual Basic | Microsoft Learn

关于注册表命令的链接

reg 命令 | Microsoft Learn

regedit 命令行参数_regedit /e_Blue_Dream_的博客-CSDN博客

regedit.exe的命令行使用_oBuDaoWeng的博客-CSDN博客

大佬汇总的外部命令,感觉应该能用在右键菜单.

windows 运行命令大全 - Quicker (getquicker.net)

Windows10 丰富全面的ms命令大全 - Quicker (getquicker.net)

分享quicker外部启动相关参数 - Quicker (getquicker.net)

· {{comment.createTimeStr}}
{{reply.votePoints}}
回复   – {{reply.createTimeStr}}
回复 x
标签
目录
相关操作