ixS*_*Sci 6 windows contextmenu
如何更改上下文菜单中条目的顺序?(例如,对于目录)我需要知道Windows在显示时如何确定顺序,以便我可以控制它.例如,我想将自定义操作放在上下文菜单列表的末尾
预先感谢!
我的Google-fu让我这样:
因此,排序基于决策顺序中的以下元素:
- 关键优先级(例如,txtfile,*,AFSO)
- shellex\contextmenuhandlers的注册表枚举顺序,静态动词的特殊情况始终是第一个
- IContextMenu实现顺序
因此,如果存在任何争用位置,则扩展没有一致的方式来保证它们在菜单中的相对位置.
显然,您无法对阶段1执行任何操作.阶段3仅适用于处理程序中实现的谓词.离开阶段2.你唯一能做的就是在ContextMenuHandlers下命名你的条目,这样它就会先被枚举,但没有什么能阻止别人做同样的事情.
这适用于 Windows 7,对于较新版本可能相同。它受到其他答案的启发,都在影响订单。
我正在解释“*”(所有文件)的条目,但特殊扩展名也是如此。
我对注册表中的任何更改不承担任何责任!
上下文菜单中有三个部分,如如何更改上下文菜单中的选项顺序中所述(来自@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).
Run Code Online (Sandbox Code Playgroud)
在这些部分中,位置由@Luke 回答的规则决定。
更改“部分”中顺序的最简单方法是更改HKCR-*-shell或下的注册表项名称HKCR-*-shellex。所有在 subkey 下的shell都将在它们之前shellex。具有CLSID作为键名的键将作为最后一个条目,因为它们在使用顺序中排在最后。
例如,我正在按照MSDN 中的示例构建上下文菜单处理程序
EDIT 2021-04-14:
MSDN 链接不再有效,它重定向到“浏览代码示例”页面。您可以在那里搜索Context menu sample,但我关注的那个似乎已被删除。
最接近我跟随的旧的也许是这个
我遵循的方法是将CLSID用作 下键的名称shellex,并使用“友好名称”作为默认值。它被放置在“部分”2(顶部部分)的底部。我将密钥名称更改为类似的名称Asample并将默认值更改为CLSID。现在它直接在shell.
还有其他一些更改顺序的方法。
对于下面的键,shell您可以Position使用字符串数据Top或Bottom. 无法决定在哪个“部分”。
对于shellex值下的键Position没有影响。相反,可以决定条目将在哪个“部分”中使用flags,如上面的链接所述。
CLSID对要移动的 shellext使用。就像
{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}. 从键名或默认值获取它,这取决于条目是如何完成的。- 找到 HKCR-CLSID 下的条目,键的名称为
CLSID.- 添加具有名称的值
flags和数据DWORD与找到的下上述“部分”号码CLSID。
| 归档时间: |
|
| 查看次数: |
8559 次 |
| 最近记录: |