在Windows资源管理器上下文菜单中排序

时间:2011-08-10 08:26:30

标签: windows contextmenu

如何更改上下文菜单中条目的顺序?(例如,对于目录)我需要知道Windows在显示时如何确定顺序,以便我可以控制它。例如,我想将自定义操作放在上下文菜单列表的末尾

提前感谢!

4 个答案:

答案 0 :(得分:8)

我的Google-fu带我到this

  

因此,排序基于决策顺序中的以下元素:

     
      
  1. 关键优先级(例如,txtfile,*,AFSO)
  2.   
  3. shellex \ contextmenuhandlers的注册表枚举顺序,静态动词的特殊情况始终是第一个
  4.   
  5. IContextMenu实施顺序
  6.         

    因此,如果对位置存在任何争用,则扩展无法保证其在菜单中的相对位置。

显然你不能对第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-*-shellHKCR-*-shellex下的注册表项名称。子项shell下的所有内容都位于shellex下面。以CLSID作为键名的键将作为最后一个条目,因为它们是使用顺序中的最后一个。

例如,我正在关注sample from MSDN to build a Context Menu Handler。这是使用CLSID作为shellex下的密钥的名称,并使用“友好名称”作为默认值。它被放置在“部分”2(顶部)的底部。我将密钥名称更改为Asample,并将默认值更改为CLSID。现在它直接在shell下的条目之后。

还有更多方法可以改变顺序。

对于shell下的密钥,您可以使用字符串数据PositionTop添加值Bottom。无法决定“部分”。

对于shellex下的键,值Position无效。相反,可以决定条目将在上面使用flagsdescribed in the link的“部分”。

  
      
  1. CLSID用于您要移动的shellext。就像是   {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}。从密钥名称或默认值获取它,这取决于条目的完成方式。
  2.   
  3. 在HKCR-CLSID下找到该条目,该密钥的名称为CLSID
  4.   
  5. 在找到的flags下添加名称为DWORD且数据CLSID的值与上述“section”数字。
  6.   

答案 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”开头。