【问题标题】:Order in the Windows Explorer context menu在 Windows 资源管理器上下文菜单中订购
【发布时间】:2011-08-10 08:26:30
【问题描述】:

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

提前致谢!

【问题讨论】:

标签: windows contextmenu


【解决方案1】:

我的 Google-fu 将我带到this

所以排序是基于以下元素的决策顺序:

  1. 关键优先级(例如,txtfile、*、AFSO)
  2. shellex\contextmenuhandlers 的注册表枚举顺序,静态动词的特殊情况总是在前
  3. IContextMenu 实现顺序

因此,如果有任何位置竞争,则扩展程序没有一致的方式来保证它们在菜单中的相对位置。

显然你不能对阶段 1 做任何事情。阶段 3 只适用于在你的处理程序中实现的动词。剩下的就是第 2 阶段。您唯一能做的就是在 ContextMenuHandlers 下命名您的条目,以便首先枚举它,但没有什么能阻止其他人做同样的事情。

【讨论】:

【解决方案2】:

这适用于 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
EDIT 2021-04-14: MSDN 链接不再有效,它重定向到“浏览代码示例”页面。你可以在那里搜索Context menu sample,但是我关注的那个好像已经被删除了。
最接近我关注的旧的is perhaps this

我遵循的是使用CLSID 作为shellex 下键的名称,并使用“友好名称”作为默认值。它被放置在“部分”2(顶部)的底部。我将键名更改为Asample 之类的名称,并将默认值更改为CLSID。现在直接在shell下的条目之后。

还有一些改变顺序的方法。

对于shell 下的键,您可以使用字符串数据TopBottom 添加值Position。无法决定在哪个“部分”。

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

  1. 使用CLSID 作为要移动的shellext。这就像
    {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}。从键名或默认值中获取,这取决于条目是如何完成的。
  2. 在 HKCR-CLSID 下找到条目,该键的名称为 CLSID
  3. 在找到的CLSID 下添加名称为flags 和数据DWORD 的值和上面描述的“部分”编号。

【讨论】:

  • MSDN 链接已失效。
  • 谢谢@user30478,我已经更新了答案。但我找不到我关注的旧示例。
【解决方案3】:

This Q&A 展示了一种在上下文菜单中创建(而不是移动)项目的简单方法。我设法复制了一个现有项目。然后我将我的项目移动到上下文菜单中更高且更易于访问的位置,方法是将键重命名为以“aMyItem”或“0MyItem”开头。

【讨论】:

    【解决方案4】:

    这是为我做的...第 4 步到第 7 步 - 设置“标志” http://techoqueries.blogspot.de/2012/08/how-to-change-order-of-options-in.html

    【讨论】:

      【解决方案5】:

      我一直在试图找到一种重新订购东西的方法,这让我很恼火,日常使用选项被推到最后,当你可能会在蓝月亮中使用一次的晦涩实用程序填满了顶部时列表。

      我找到了一种懒惰的方法来做到这一点,使用一个名为“Windows 10 管理器”Windows 10 Manager 的小实用程序包 - 这只是一些 quid,但它比注册表黑客攻击要容易得多。它不能做任何事情,但它确实可以让你至少将项目添加到顶部 - 并且还可以压制那些不经询问就将自己安装在那里的厚脸皮。

      如您所见,它实际上是复制一些条目而不是移动它们,但没关系。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 2011-01-17
        • 2010-12-22
        相关资源
        最近更新 更多