【问题标题】:C# global hotkey (without the usually used global hook)C# 全局热键(没有通常使用的全局钩子)
【发布时间】:2011-03-29 00:08:07
【问题描述】:

我正在创建一个程序供我个人使用,它必须对某些热键做出反应。例如,当我按下 ctrl+win+z 时,它必须执行某个操作。目前,我可以使用 user32.dll 中的 GetKeyState() 来检测按键,但是我无法阻止它们被传递给活动的应用程序。在 ctrl+win+z 的情况下,我想要发生的操作会发生,但如果我使用资源管理器,例如,资源管理器也会将其读取为“撤消”。

显而易见的解决方案是使用“SetWindowsHookEx()”(也来自 user32.dll),但是每次我尝试涉及它的解决方案时(任何类似于 this site's 示例代码的东西)我都会在第一个我使用热键的时间。这是不可接受的。

我希望有人可以提供帮助。如果需要,我可以提供更多信息。

【问题讨论】:

  • 即使在调试器之外,您是否也会减慢速度?
  • 是的。这不仅仅是减速……它是所有程序对任何输入的完全且完全无响应的可能 4 秒。进入/退出调试器没有任何改变。

标签: c# hotkeys keyboard-hook


【解决方案1】:

您尝试过RegisterHotKey 功能吗?它绝对比 windows 挂钩更容易使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2017-12-20
    相关资源
    最近更新 更多