【问题标题】:How can I override Windows keyboard shortcuts?如何覆盖 Windows 键盘快捷键?
【发布时间】:2018-07-23 02:50:48
【问题描述】:

我想创建一个应用程序来管理 Windows 桌面上窗口的位置。我正在使用Windows API 来完成此操作。

但是,DWM 已经使用了诸如Windows + Arrow KeysWindows + Alt + Arrow Keys 等键盘命令。我希望我的程序响应这些宏并覆盖默认功能。我该怎么做?

例如,我想知道 AutoHotKey 是如何做到的。

我应该补充一点,我正在使用 D 语言编写这个应用程序,但我可以轻松地将任何 C++ 代码移植到 D。

编辑:我找到this function,它会覆盖系统默认值吗?

【问题讨论】:

  • 如您链接到的API documentation 中所述:“涉及 WINDOWS 键的键盘快捷键保留供操作系统使用。”
  • @IInspectable 所以,如果你告诉我,其他应用程序(即 AutoHotKey)不可能做到这一点?
  • 我没有告诉你,这是不可能的。我只是引用文档来提醒您,系统对负责任的开发人员的期望。 “[H]其他应用程序(即 AutoHotKey)如何做到这一点?” - AutoHotkey 是 open source。你可以自己回答这个问题。
  • IInspectable 是对的。这可能会导致问题,文档甚至会警告您...小心行事!

标签: c++ windows winapi keyboard-shortcuts d


【解决方案1】:

我相信您正在寻找的 API 函数是 SetWindowsHookExLowLevelKeyboardProc

由于您使用d 标签标记了您的问题,我假设您可能使用的是 D 编程语言。您可以在https://github.com/JinShil/Dsus2/blob/b08c66c6a6efb46134c409aac9f1c600d62f99fa/Dsus2/main.d#L184 找到使用 D 编程语言的示例。我是该代码的作者。

【讨论】:

  • SetWindowsHookEx*
猜你喜欢
  • 2015-04-17
  • 2022-12-31
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 2014-05-04
  • 1970-01-01
  • 2014-12-21
相关资源
最近更新 更多