上下文菜单中的键盘快捷键 (Windows 10)

jip*_*oe4 6 windows windows-registry keyboard-shortcuts context-menu windows-10

所以我刚刚在我的桌面上创建了一个带有新扩展名的文件,这就是它的上下文菜单的样子:

在此处输入图片说明

我可以使用键盘上的菜单键调出上下文菜单,然后我实际上可以通过按键来选择上下文菜单中的一些项目。当然,这让我有机会创建一些键盘快捷键。但是,我不太明白它们是如何工作的。以下面的例子为例。

如果我创建一个名为“item.newextension”的文件,然后导入以下注册表文件:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.newextension\shell\Edit\command]
@="notepad.exe \"%1\""

[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.newextension\shell\Contemplate\command]
@="mspaint.exe \"%1\""
Run Code Online (Sandbox Code Playgroud)

我得到了一些不一致和有趣的结果。为了在同一页面上,现在我的上下文菜单如下所示:

在此处输入图片说明

如果我打开上下文菜单并按“e”键,记事本会立即打开。此外,如果我打开上下文菜单并按“c”键,上下文菜单会在“考虑”和“复制”之间切换,但在我按 Enter 之前不会选择任何一个。

所以我意识到,如果你仔细观察,上下文菜单条目中的每个字母下方都有一条小线,对应于需要按下哪个键来选择它,当有重叠时,重复按下该键会在两者之间切换。所以我有几个问题:

  1. 当我创建自己的上下文菜单条目时,就像我在 .reg 文件中所做的那样,我如何选择哪个键负责选择该条目?
  2. 我可以更改诸如“创建快捷方式”和“复制”之类的现有键盘快捷键,还是它们必须始终分别为“s”和“c”?

我在 Windows 10 1803 Build 17134 上供参考。

Ben*_*n N 9

如果有多个上下文菜单项具有相同的热键,按下该热键将根据您的发现在它们之间切换。如果一个热键只对应一个项目,按下它会立即触发该项目。

显然,Windows 使用项目文本的第一个字母作为热键。您可以通过在&要成为热键的字母前放置一个与号 ( )来覆盖它。但是,这必须在命令的注册表项的默认值中完成,而不是在键名中。在此图像中,我尝试将 Contemplate 的热键更改为O并将 Edit 的热键更改为I

在键名或默认值中使用与号似乎有效

两者似乎都有效,因为上述配置会生成此上下文菜单:

更改在视觉上生效

O立即按下会触发 Contemplate,但I即使我的菜单中没有其他项目使用I. 将 Edit 更改为具有无符号键名但默认值为Ed&it使其按预期工作。

没有一种直接的方法可以更改内置的上下文菜单项,例如复制;它们不在注册表中,而是由资源管理器生成。您可以编写一个 shell 扩展,使用SetMenuItemInfo适当的菜单信息结构在运行时更改它。对于较旧的答案,我编写了一个 shell 扩展来更改内置项目的图标,这可能是一个很好的起点。