如何绑定热键

How to bind a hotkey

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

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

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

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

比如可以在user32.dll中调用SetWindowsHookEx(Pinvoke) | (MSDN)方法安装一个应用挂钩

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 示例,可以帮助您入门。