如何更改上下文菜单中条目的顺序?(例如,对于目录)我需要知道Windows在显示时如何确定顺序,以便我可以控制它。例如,我想将自定义操作放在上下文菜单列表的末尾
提前感谢!
答案 0 :(得分:8)
我的Google-fu带我到this:
因此,排序基于决策顺序中的以下元素:
- 关键优先级(例如,txtfile,*,AFSO)
- shellex \ contextmenuhandlers的注册表枚举顺序,静态动词的特殊情况始终是第一个
- IContextMenu实施顺序
醇>因此,如果对位置存在任何争用,则扩展无法保证其在菜单中的相对位置。
显然你不能对第1阶段做任何事情。阶段3仅适用于你的处理程序中实现的动词。离开第2阶段。你唯一能做的就是在ContextMenuHandlers下命名你的条目,这样它就会先被枚举,但没有什么能阻止别人做同样的事情。
答案 1 :(得分:3)
这适用于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。这是使用CLSID
作为shellex
下的密钥的名称,并使用“友好名称”作为默认值。它被放置在“部分”2(顶部)的底部。我将密钥名称更改为Asample
,并将默认值更改为CLSID
。现在它直接在shell
下的条目之后。
还有更多方法可以改变顺序。
对于shell
下的密钥,您可以使用字符串数据Position
或Top
添加值Bottom
。无法决定“部分”。
对于shellex
下的键,值Position
无效。相反,可以决定条目将在上面使用flags
,described in the link的“部分”。
- 将
CLSID
用于您要移动的shellext。就像是{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
。从密钥名称或默认值获取它,这取决于条目的完成方式。- 在HKCR-CLSID下找到该条目,该密钥的名称为
CLSID
。- 在找到的
醇>flags
下添加名称为DWORD
且数据CLSID
的值与上述“section”数字。
答案 2 :(得分:2)
这为我做了......步骤4到7 - 设置"标志" http://techoqueries.blogspot.de/2012/08/how-to-change-order-of-options-in.html
答案 3 :(得分:1)
This Q&A显示了在上下文菜单中创建(不移动)项目的简单方法。我设法复制现有项目。然后我将项目移动到上下文菜单中更高且更易于访问的位置,方法是将键重命名为以“aMyItem”或“0MyItem”开头。