Как вызвать событие нажатия клавиши или щелчка мыши, не касаясь какого-либо устройства ввода на системном уровне? - PullRequest
5 голосов
/ 30 октября 2010

Как вызвать автоматическое нажатие клавиши или событие щелчка мыши, когда на экране другого приложения или браузера появляется цвет?

Ответы [ 4 ]

11 голосов
/ 30 октября 2010

Это во многом зависит от того, что вы хотите. Вы хотите отправить ключи на

  • ваше приложение
  • другое фиксированное приложение
  • Имитация глобального нажатия клавиш

Глобальное моделирование клавиш

Все это приведет к проблемам с таргетингом на конкретное приложение и изменениям в активном окне.

  • SendKeys Отправляет сообщения в активное приложение. Это функция высокого уровня, принимающая строку, кодирующую последовательность клавиш.

  • keybd_event очень низкий уровень и вводит глобальное нажатие клавиши. В большинстве случаев SendKeys проще в использовании.

  • mouse_event имитирует ввод мыши.

  • SendInput заменяет эти функции. Он более гибкий, но немного сложнее в использовании.

Отправка в определенное окно

При работе с фиксированным целевым окном отправка сообщений может работать в зависимости от того, как работает окно. Но так как не обновляет все состояния , это может не всегда работать. Но у вас нет условий гонки с изменением фокуса окна, что стоит много.

  • WM_CHAR отправляет символ в основной многоязычной плоскости (16 бит)
  • WM_UNICHAR отправляет символ, поддерживающий весь диапазон Unicode
  • WM_KEYDOWN и WM_KEYUP Отправляет клавиши, которые будут преобразованы в символы с помощью раскладки клавиатуры.

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

1 голос
/ 20 июня 2016

когда на экране другого приложения или браузера появляется цвет

Я создал одну программу, использующую OpenCV и C ++ для работы с мышью жестом пальца. Я использовал 3 цветные полоски для функции 3 мыши.

  • Желтый цвет для левого клика
  • Синий цвет для правого клика
  • Розовый цвет для управления положением курсора

Всякий раз, когда камера обнаруживает эти цвета, связанная функция имеет место, я использовал mouse_event для выполнения функции мыши. Для получения дополнительной информации вы можете прочитать мой код , блог , видео .

0 голосов
/ 30 октября 2010

Вы можете использовать класс .NET SendKeys для отправки нажатий клавиш. Эмуляция щелчков мыши требует P / Invoke. Я не знаю, как определять цвета на экране.

0 голосов
/ 30 октября 2010

Я не на 100% уверен, что вы хотите, но если все, что вам нужно, это запустить метод, связавший событие button.Clicked, то вы можете запустить метод вручную, как и любой другой метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...