Задать вопрос

Программно эмулировать клик

Всем привет.

Есть некий софт, а именно игра. И у неё есть проприетарный античит.
Есть в WinAPI такая вещь, как mouse_event() или же его современный аналог SendInput().

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

До недавнего времени всё было нормально. Но теперь античит научился блокировать программный ввод после нескольких кликов. Количество установить не удалось, всегда по-разному.
Долгие тесты с различными вариантами ни к чему не привели. Т.е. античиту без разницы, проходит 10 кликов с интервалом каждого в 20мс или 1000мс, через 5-6 кликов ввод будет заблокирован.

Под блокировкой я подразумеваю такое поведение: прогнали мы несколько кликов, античит блокнул. Теперь, если мы попробуем вызвать клик(mouse_event, например), то в окне игры ровно ничего не произойдет. Именно в окне игры. Можно продолжать слать клики и свернув игру обнаружить, что клики действительно делаются, но развернув игру - опять, ничего.

Через некоторое время(опять же, установить не удалось) блокировку "отпускает" и можно прогнать еще парочку кликов. А еще можно не ждать и перезапустить программу, которая шлет клики(работает не всегда).

Весь гугл облизал, вариантов решения не нашел.
Есть интересная особенность. У меня клавиатура, на которой на дополнительные кнопки можно писать макросы. Если сделать что-то вроде:
Click
Goto 1

То в игру эти клики проходят без проблем. В таком макросе примерно 100-150 кликов в секунду.

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

UPDATE 1:
На основе предположения @xandox, выяснилась довольно интересная особенность.
Предположим что античит заблокировал клики.
Сворачиваем игру, делаем один клик в любом месте(пусть это будет скайп, браузер или блокнот).
Разворачиваем игру - античит пропустит один клик.
Сворачиваем игру, делаем семь любых кликов.
Разворачиваем игру, античит пропустит семь кликов.
И так далее, 3-3, 5-5, 50-50.
Что это и как объяснить - пока не знаю.
  • Вопрос задан
  • 6086 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@xandox
А после блокировки программных кликов - от мышки клики работают?
Если да - то нужно понять, чем отличаются события которые ты посылаешь в программу от событий которые генерить система. Я не особо разбираюсь в WinAPI но сдается мне, что где-то в событии должен быть идентификатор устройства. Есть еще вариант, что античит сравнивает пришетшие события с каким-нибудь GetMouseState - в котором реально ничего не меняется и по этим признакам определяет, что тут что-то не чисто (этим кстати можно объяснить и то что не всегда через одно и тоже количество кликов блокируется ввод и что перезапуск иногда помогает). Тогда надо поискать возможность как изменять и этот стэйт.
Ответ написан
vipuhoff
@vipuhoff
Попробуй воспользоваться .net библиотекой InputSimulator, работать с ней не сложно, но эмуляция на достаточно низком уровне, возможно будет работать, у меня в RDP сессии она единственная нормально работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы