Я написал небольшую программу, которая использует 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);
}
Этот хук работает, но только пока другое приложение не работает, поэтому я все еще застрял...
После разговора с поддержкой другого приложения моя проблема была решена. Все, что мне нужно было сделать, - это запустить приложение в режиме администратора.
Спасибо за помощь! Я изучил новые трюки с крючками.
GetAsyncKeyState
не "сам получает входные данные". Когда ты это называешь? Вы голосуете? Звонит в ответ на сообщение? Покажите некоторый исходный код ...