Обращение с мышью

Заставить мышь двигаться и нажимать на что-то в C#, наверное, самое простое, что я делал в своей жизни. Вот класс:

С этим классом, если вы вызовете Move(…), а затем Click(), у вас будет мышь и вызов событий щелчка в любой точке экрана.

Сразу после тестирования поведения мыши я обнаружил серьезный недостаток в своем дизайне: когда ваша программа берет на себя управление мышью и дважды щелкает объекты каждые 300 мс, и вдобавок ко всему, потому что ваша программа больше не находится в фокусе (вы выполняете какие-то тяжелые операции). работать с мышью в веб-браузере), вы не можете обрабатывать типичные ключевые события в своей форме (и вы случайно начинаете звонить своим друзьям в скайпе), что приводит нас к:

(Глобально) обработка событий клавиатуры

Прежде чем вы начнете думать обо мне в хорошем смысле, давайте отдадим должное, где это необходимо. И это заслуга Стивена Тоуба за написание статьи Низкоуровневый хук клавиатуры в C#. Используя его решение и немного хакерства, я начал пересылать глобальные события нажатия клавиш в свою форму, вот так:

Для перенаправления нажатий клавиш в мою форму достаточно, чтобы я подписался на событие KeyIntercepted, вот так:

В моем методе Form_KeyDown(…) я проверяю, была ли нажата клавиша Escape, и если да, то я останавливаю основной таймер, чтобы самостоятельно перемещать мышь.

Все еще хотите больше?

Проверьте репозиторий: https://gitlab.com/Sadowski/BejeweledBot
Или вернитесь к предыдущим статьям:
* Часть 0 — введение
* Часть 1 — распознавание плитки
* Часть 2 — перемещение плитки