我编写了一个程序来捕获来自任何应用程序的密钥。当我在任何窗口中使用其他应用程序时,它现在可以正常工作,但是当我在像dirt3这样的游戏中运行窗体模式时,当我按键它只是没有,我必须alt+tab
而不是按键它会工作。有没有办法让它成为程序的关键捕获优先级是绝对的,即使我在游戏中也比捕获更重要?
感谢
private static LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = IntPtr.Zero;
private static IntPtr SetHook(LowLevelKeyboardProc proc)
{
using (Process curProcess = Process.GetCurrentProcess())
using (ProcessModule curModule = curProcess.MainModule)
{
return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
GetModuleHandle(curModule.ModuleName), 0);
}
}
protected static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
commandStr += ((Keys)vkCode);
if (commandStr.ToLower().Contains("ooff"))
{// do it work
}
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}