热键帮助 - 快捷键悲伤!
我使用 Steinberg 的专业级数字音频工作站 (DAW) 环境“Cubase”。它具有多个预定义的快捷键,并且能够创建用户定义的快捷键。其中一个命令快捷键与名为“nView 桌面管理器调试”的 nVidia 显示驱动程序实用程序“重叠”。
不幸的是,似乎没有办法修改ShiftCtrlAltN分配给此实用程序的快捷方式。我需要确定此快捷方式在注册表中的位置 - 要么找到实际的 Explorer 快捷方式(并在快捷方式的“属性”窗口下手动删除其快捷键),要么导航到注册表中的正确值并删除在那里分配的全局快捷键 - 以便我的音乐制作环境按要求运行。
[是的!这是第一世界的问题,不是吗?]
因此,有三个问题:
- 这些全局键盘快捷键组合存储在注册表中的什么位置?
- 有没有办法显示系统当前使用的所有键盘快捷键(如果需要,包括所有预定义的 Windows 快捷键!)?
- 有没有办法列出所有已分配键盘快捷键的 Explorer 快捷方式(无论是由个人用户还是由安装它们的应用程序分配)?
我花了数周时间解决这个问题,包括安装 HotKeyCommander 和多个其他实用程序(它们要么没有提供必要的信息,要么无法在 64 位系统上成功运行,要么没有提供足够的信息让我找到并修改/删除有问题的注册表项)。
提前致谢,
史蒂夫。
答案1
Windows 不会将正在运行的应用程序的键盘快捷键(技术上称为加速键)存储在注册表中。相反,当应用程序启动时,它会使用Windows 的消息循环接入消息队列(类似于“中间人”攻击),拦截消息(例如WM_KEYDOWN),然后将该消息传递给其他应用程序或“吃掉”它,以便其他应用程序不会收到它。
然而,很可能您可以禁用有问题的应用程序“nView 桌面管理器调试”没有明显的效果。另外,是否有必要运行调试版本,开发人员和技术支持人员会用它来跟踪应用程序中的问题吗?也许正常的非调试应用程序不会窃取这些击键。
答案2
至于第 3 点,
有一个系统键文件,其中有一个诊断部分,用于搜索用户设置的热键。请参阅https://onedrive.live.com/?id=E2F0CE17A268A4FA%21121&cid=E2F0CE17A268A4FA并点击快捷键和键修饰符.hta
应用程序键在 exe 文件中定义,可以作为资源或通过代码定义。
您想要的术语是热键。热键是全局的,应用程序热键有两种类型 - 一种用于程序处理,一种用于激活窗口。
当你设置快捷键对于桌面快捷方式,Explorer 使用 RegisterHotkey 将该热键注册到自身。如果您按下该热键并导致 GUI 程序(Explorer 调用 WaitForInputIdle),Explorer 将取消注册该热键并使用 WM_SetHotkey 将其分配给创建的窗口。