【问题标题】:How to bind a hotkey如何绑定热键
【发布时间】:2015-06-11 17:16:26
【问题描述】:

我正在尝试创建一个程序,在该程序中我可以在游戏中按下热键,该程序将接收按键并执行操作。我尝试过遵循教程并查看其他问题,但它们似乎没有提供我想要的功能或方法已过时,我无法毫无错误地使用它们。

【问题讨论】:

    标签: c# wpf key-bindings


    【解决方案1】:

    您需要使用 WINAPI 互操作来执行此操作。该技术通常被称为全局hook

    您需要处理 WM_KEYDOWNWM_KEYUPWM_SYSKEYDOWNWM_SYSKEYUP 事件。您可以阅读 WPF 和 Win32 特定的互操作 here

    您可以阅读计划调用 (PInvoke) here。 Pinvoke 是您从 .NET 应用程序调用在 dll 中实现的非托管/本机函数的方式。

    例如,您可以调用SetWindowsHookEx (Pinvoke) | (MSDN) 方法在 user32.dll 中安装应用程序挂钩。

    IntPtr hHook;
    
    using (Process process = Process.GetCurrentProcess())
    using (ProcessModule module = process.MainModule)
    {
        IntPtr hModule = GetModuleHandle(module.ModuleName);
    
        hHook = SetWindowsHookEx(HookType.WH_KEYBOARD_LL, hook, hModule, 0);
    }
    

    您可以在此 wiki 站点上找到 Pinvoke 签名:http://www.pinvoke.net

    Here 是一个最小的键盘挂钩示例。

    Here 是一个示例 C# / WPF 示例,可以帮助您入门。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 2011-06-21
      • 2014-08-11
      • 2020-05-10
      • 1970-01-01
      • 2020-12-18
      • 2012-12-11
      • 2020-07-30
      相关资源
      最近更新 更多