如何绑定热键

时间:2015-06-11 17:16:27

标签: c# wpf key-bindings

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

1 个答案:

答案 0 :(得分:2)

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

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

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

例如,您可以拨打SetWindowsHookEx (Pinvoke) | user32.dll中的(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示例,可以帮助您入门。