我编写了一个使用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);
}
这个钩子可以工作,但只有当另一个应用程序没有运行时,我仍然卡住......
答案 0 :(得分:0)
在谈到支持其他应用程序后,我的问题得到了解决。 我所要做的就是让我的应用程序以管理模式运行。
感谢大家的帮助!我确实学习了Hooks的一些新技巧。