Windows — Как заставить виртуальные нажатия клавиш работать с эмуляторами видеоигр с помощью C ++?

Я попробовал несколько способов создания виртуального алгоритма нажатия клавиш, который работает с эмуляторами видеоигр (в частности, VisualBoyAdvance). До сих пор все мои попытки не увенчались успехом, так как имитированный ввод не работает в эмуляторе (хотя физическое нажатие клавиш работает просто отлично, поэтому это не проблема отображения).

Я попробовал простое:

#include <iostream>
#include <Windows.h>

int main()
{
while (true)
{
keybd_event(0x67, 0, 0, 0);
Sleep(1000);
}
}

а также

#include <iostream>
#include <Windows.h>

INPUT ip;

int main()
{
while (1)
{
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;

// Press the "NUMPAD-7" key
ip.ki.wVk = 0x67; // virtual-key code
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
Sleep(100);

// Release the "NUMPAD-7" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));

Sleep(900);
}
}

Обе эти программы успешно набирают «7» один раз в секунду в любом выбранном текстовом редакторе, но когда я выбрал VisualBoyAdvance (которому я назначил клавишу NUMPAD-7 для кнопки «А»), ничего не происходит. Но если я затем физически нажимаю NUMPAD-7, он реагирует на нажатие кнопки A, как и должно быть.

Что я делаю неправильно? Как заставить этот код работать в эмуляторах видеоигр.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector