2012-01-21 4 views
1

Я пытаюсь создать простой бот в Qt и нуждаться в нем, чтобы имитировать нажатия клавиш в приложении OTTSIDE непосредственно из приложения Qt.Qt - C++ simulate keypress

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

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

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

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

Проблема в том, что я мало знаю API окон и особенно в контексе «Qt» и хотел бы узнать, как начать работу.

ответ

1

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

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

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

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^