【发布时间】:2011-08-10 08:26:30
【问题描述】:
如何更改上下文菜单中条目的顺序?(例如,对于目录)我需要知道 Windows 在显示时如何确定顺序,以便我可以控制它。例如,我想将自定义操作放在上下文菜单列表的末尾
提前致谢!
【问题讨论】:
-
我很抱歉这个双关语。我认为第二个链接 (windowsxp.mvps.org/context_folders.htm) 会帮助你。
标签: windows contextmenu
如何更改上下文菜单中条目的顺序?(例如,对于目录)我需要知道 Windows 在显示时如何确定顺序,以便我可以控制它。例如,我想将自定义操作放在上下文菜单列表的末尾
提前致谢!
【问题讨论】:
标签: windows contextmenu
我的 Google-fu 将我带到this:
所以排序是基于以下元素的决策顺序:
- 关键优先级(例如,txtfile、*、AFSO)
- shellex\contextmenuhandlers 的注册表枚举顺序,静态动词的特殊情况总是在前
- IContextMenu 实现顺序
因此,如果有任何位置竞争,则扩展程序没有一致的方式来保证它们在菜单中的相对位置。
显然你不能对阶段 1 做任何事情。阶段 3 只适用于在你的处理程序中实现的动词。剩下的就是第 2 阶段。您唯一能做的就是在 ContextMenuHandlers 下命名您的条目,以便首先枚举它,但没有什么能阻止其他人做同样的事情。
【讨论】:
这适用于 Windows 7,可能与新版本相同。它受到其他答案的启发,一切都在影响顺序。
我正在解释“*”(所有文件)的条目,但对于特殊扩展名也是如此。
我对注册表中的任何更改不承担任何责任!
上下文菜单中有三个部分,如How to Change the Order of Options in Context Menu(来自answer by @Anonymouse)中所述
他们叫他们:
2 - Default menu position (at the top).
1 - Send to, copy to folder and move to folder menu part (in the middle).
0 - Rename menu part (at the bottom).
在这些部分中,位置由answer by @Luke中的规则决定
在“部分”中更改顺序的最简单方法是更改HKCR-*-shell 或HKCR-*-shellex 下的注册表项的名称。子项shell 下的所有内容都将在shellex 下的它们之前。以CLSID 作为键名的键将作为最后一个条目,因为它们在使用顺序中排在最后。
例如,我关注的是 sample from MSDN to build a Context Menu Handler
EDIT 2021-04-14:
MSDN 链接不再有效,它重定向到“浏览代码示例”页面。你可以在那里搜索Context menu sample,但是我关注的那个好像已经被删除了。
最接近我关注的旧的is perhaps this
我遵循的是使用CLSID 作为shellex 下键的名称,并使用“友好名称”作为默认值。它被放置在“部分”2(顶部)的底部。我将键名更改为Asample 之类的名称,并将默认值更改为CLSID。现在直接在shell下的条目之后。
还有一些改变顺序的方法。
对于shell 下的键,您可以使用字符串数据Top 或Bottom 添加值Position。无法决定在哪个“部分”。
对于shellex 下的键,值Position 无效。相反,可以决定条目将在哪个“部分”使用flags、described in the link 以上。
- 使用
CLSID作为要移动的shellext。这就像{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}。从键名或默认值中获取,这取决于条目是如何完成的。- 在 HKCR-CLSID 下找到条目,该键的名称为
CLSID。- 在找到的
CLSID下添加名称为flags和数据DWORD的值和上面描述的“部分”编号。
【讨论】:
This Q&A 展示了一种在上下文菜单中创建(而不是移动)项目的简单方法。我设法复制了一个现有项目。然后我将我的项目移动到上下文菜单中更高且更易于访问的位置,方法是将键重命名为以“aMyItem”或“0MyItem”开头。
【讨论】:
这是为我做的...第 4 步到第 7 步 - 设置“标志” http://techoqueries.blogspot.de/2012/08/how-to-change-order-of-options-in.html
【讨论】:
我一直在试图找到一种重新订购东西的方法,这让我很恼火,日常使用选项被推到最后,当你可能会在蓝月亮中使用一次的晦涩实用程序填满了顶部时列表。
我找到了一种懒惰的方法来做到这一点,使用一个名为“Windows 10 管理器”Windows 10 Manager 的小实用程序包 - 这只是一些 quid,但它比注册表黑客攻击要容易得多。它不能做任何事情,但它确实可以让你至少将项目添加到顶部 - 并且还可以压制那些不经询问就将自己安装在那里的厚脸皮。
如您所见,它实际上是复制一些条目而不是移动它们,但没关系。
【讨论】: