GetAsyncKeyState() - 外部程序干扰它

时间:2014-02-27 02:24:25

标签: c++ c windows winapi mfc

我编写了一个使用GetAsyncKeyState()的小程序,它可以自行运行。

问题是,当我运行某个外部应用程序(不是我的)时,我的GetAsyncKeyState()完全停止接收输入。我希望能够运行这两个应用程序。

我能做些什么来强制我的程序再次接收键盘输入?什么可能导致这个问题?

谢谢!

**更多详情* *

我正在使用MFC并处理WM_TIMER消息,这会导致捕获键盘输入。我使输入可配置,然后我调用

if(GetAsyncKeyState(chVirtualKey) < 0) { //stuff happens }

**更新* * 我制作了另一个测试应用程序(非MFC),用我对它们的有限知识设置了一个钩子:

SetWindowsHookEx(WH_KEYBOARD_LL, &LowLevelKeyboardProc, hInstance, NULL);

然后处理它:

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*) lParam;

        if (p->vkCode == VK_SPACE) // spacebar key
        {
             SetCursorPos(400, 400); //just to test
        }
     }
    return CallNextHookEx(hHook, nCode, wParam, lParam);
}

这个钩子可以工作,但只有当另一个应用程序没有运行时,我仍然卡住......

1 个答案:

答案 0 :(得分:0)

在谈到支持其他应用程序后,我的问题得到了解决。 我所要做的就是让我的应用程序以管理模式运行。

感谢大家的帮助!我确实学习了Hooks的一些新技巧。