【问题标题】:Looking for a function similar to GetAsyncKeyState or GetCursorPos寻找类似于 GetAsyncKeyState 或 GetCursorPos 的函数
【发布时间】:2011-08-20 21:27:34
【问题描述】:

我想在不使用诸如 getasynckeystate 之类的钩子或键盘监视功能的情况下获得按键信号,这似乎使我的问题过大了。我需要一个可以全局工作的功能(在其创建的窗口之外),例如 GetCursorPos 但需要按键(PageUp按键)来触发一些自定义事件。感谢您提供的任何指导。

【问题讨论】:

  • 你必须使用钩子。说您不想使用 设计 来做您需要的事情的 winapi 功能不会让您有任何收获。低级键盘钩子很容易上手,它不是全局钩子。
  • 我同意@Hans。有一种简单的方法可以做到这一点:它被称为钩子 :)

标签: c++ visual-studio-2010 winapi visual-c++


【解决方案1】:

我相信 DirectInput 可以做到这一点。很久以前,我的产品团队有一个语音通信应用程序,无论前台是否有其他应用程序,我们的应用程序都可以捕捉到“一键通”键。

如果内存服务器正确,我们使用 DirectInput 和一个专用线程监听 DInput 以向我们的 HEVENT 句柄发出信号。当偶数线程醒来时,它会直接询问按下了什么键。如果是我们的热键按下,我们将麦克风取消静音(并在 up 事件中将其静音)。

大多数 DirectInput 文档已从 MSDN 中删除。 (由 XInput 替换)。我不知道 xinput 是否可以完成同样的事情。但是,如果您可以找到旧版 DirectX SDK 包(如 DirectX 8 SDK),则包含的文档应该包含 DirectInput 所需的一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2013-01-27
    • 2010-12-07
    相关资源
    最近更新 更多