如何为Windows应用程序注册自定义键盘快捷键

8
我想创建一个Windows实用程序应用程序,可以使用键盘快捷键从任何其他应用程序中随时调用,例如:
• Win + T
• Ctrl + T
• Alt + T
• Ctrl + Alt + T
• Ctrl + Shift + T
我可以使用哪些组合键以及如何在Windows注册表中设置这些键?
(如果快捷键被其他应用程序使用,则当然不起作用。)

您是在询问要以编程方式还是手动设置这些快捷方式? - dance2die
什么是STRG?这和CTRL一样吗? - David Koelle
1
STRG是CTRL的德语名称 :) - Federico Elles
4个回答

7

适用于编程的快捷键分配。 - dance2die

1
如果您的应用程序(或其快捷方式)位于桌面上,则可以右键单击以获取上下文菜单,选择“属性”,然后在其中输入快捷键。只需单击“快捷键”文本字段,然后按下所需的快捷键即可。
我已将 WIN +C分配给我的计算器,将 WIN +V分配给我的音量控制。

适用于手动快捷键分配的工作 - dance2die
很有趣。这似乎只适用于“本地”应用程序。因为我在WinForms C#中创建的每个应用程序,在右键单击桌面上的文件时,属性对话框中都没有该设置。 - jay_t55
1
一直在想是否存在集中存储这些热键的地方,关于这个问题可以到 SuperUser 上了解。我会怀疑它们被存储在注册表中。现在你似乎在暗示扫描“桌面上”的快捷方式集合来查找热键映射。有更多详细信息的指针吗? - Lumi

1

如果您需要比 shell 快捷方式提供更高级的场景,您应该先阅读Win32 HooksHooks Overview

更具体地说,您需要使用SetWindowsHookEx函数添加一个WH_KEYBOARD钩子。完成后,您还需要通过UnhookWindowsHookEx取消挂钩。

有一篇来自 Dino Esposito 的旧文章介绍如何通过一些 Win32 互操作在 .NET 中实现Windows Hooks


适用于编程的快捷键分配。 - dance2die

0

恐怕你不能仅通过在注册表中设置值来完成这个任务,正如其他答案所指出的那样,需要调用一些Windows API例程才能实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接