Нажать кнопку имитации клавиатуры для клавиш со стрелками - PullRequest
0 голосов
/ 15 ноября 2018

Я настроил 2 функции для имитации нажатий кнопок на клавиатуре

void KeyboardButtonDown(DWORD a)
{
    INPUT Input = { 0 };
    // Set up a generic keyboard event.
    Input.type    = INPUT_KEYBOARD;
    Input.ki.wVk  = a; 
    SendInput(1, &Input, sizeof(INPUT));
}

void KeyboardButtonUp(DWORD a)
{
    INPUT Input = { 0 };
    Input.type        = INPUT_KEYBOARD;
    Input.ki.dwFlags  = KEYEVENTF_KEYUP;
    Input.ki.wVk      = a;
    SendInput(1, &Input, sizeof(INPUT));
}

В большинстве случаев работает, но не работает в некоторых приложениях при симуляции клавиш со стрелками, как простой пример

KeyboardButtonDown(VK_LEFT);
Sleep(50);
KeyboardButtonUp(VK_LEFT);
Sleep(50);

Он работает в блокноте, но когда играет в игру, он ничего не делает.Я сопоставил элементы управления в игре, чтобы использовать вместо них другие ключи, и тогда он отлично работает.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 15 ноября 2018

Если принимающее приложение использует прямой ввод, вы должны отправлять коды сканирования вместо кодов виртуальных клавиш.

...