我试图创建一个程序,我可以在游戏中按热键,程序将接收按键并执行操作。我已经尝试过关注教程并查看其他问题,但它们似乎没有提供我想要的功能或方法已经过时,我不能没有错误地使用它们。
答案 0 :(得分:2)
您需要使用WINAPI Interop执行此操作。该技术通常被称为全局hook。
您需要处理WM_KEYDOWN
,WM_KEYUP
,WM_SYSKEYDOWN
和WM_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示例,可以帮助您入门。