C#在关注游戏时捕获键盘键

时间:2017-01-24 08:48:45

标签: c# logging capture

我编写了一个程序来捕获来自任何应用程序的密钥。当我在任何窗口中使用其他应用程序时,它现在可以正常工作,但是当我在像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);
    }

0 个答案:

没有答案