Qt - c ++ симулировать нажатие клавиш - PullRequest
1 голос
/ 21 января 2012

Я пытаюсь создать простого бота в Qt, и мне нужен способ имитировать нажатие клавиатуры ВНЕ САМОЕ приложение Qt.

Я успешно сделал это возможным, используя «старый» keybd_event

keybd_event(Qt::Key_A,0,0, 0); // Pressing the 'A-button"

и это прекрасно работает. Но я не могу этого сделать, когда пытаюсь выполнить команду «выбрать все», для которой нужно нажать две кнопки одновременно.

Когда я исследовал проблему в Google, меня обратили к функции ' SendInput ' с сообщением «Эта функция (keybd_event) была заменена. Вместо этого используйте SendInput. '

Проблема сейчас в том, что я немного разбираюсь в Windows API, особенно в контексте "Qt", и хотел бы получить руководство по началу работы.

1 Ответ

1 голос
/ 21 января 2012

keybd_event на самом деле не функция Qt, а часть Windows Api.

И keybd_event, и SendInput позволяют отправлять нажатие событие и выпуск событие.Если вы хотите отправить комбинацию ctrl+A, вам следует отправлять события следующим образом:

press Ctrl -> press A -> release A -> release Ctrl

Если вы хотите использовать keybd_event, вам необходимо вызвать его 4 раза подряд, есливы хотите использовать SendInput, вы можете создать массив из 4 событий.

Вы должны использовать коды клавиатуры из Windows API для имитации событий клавиатуры, тогда как коды Qt могут совпадать с кодами Microsoft.

Также вы должны понимать, что это решение не имеет ничего общего с Qt, оно указано Windows.

Вы только что нашли все ссылки на документы, которые вам понадобятся, я думаю, вы должны начать изучать его и спроситьболее конкретные вопросы, если у вас возникнут проблемы.

...