Что нового

Передвижение курсора симулирующее человеческое.

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Версия AutoIt: Version: 3.3.8.1 или Version: 3.3.9.4
Описание: Перемещение курсора так, как это делает человек.
Примечания: Желательно если будет функция в 4 параметрами: X1 ,Y1, X2,Y2. Нужно не для бота, а для перемещения по web страницам.

Был бы очень признателен, если бы кто поделился алгоритмом (или же готовой функцией) передвижения курсора из координаты А в координату Б, способом, наиболее близким к тому, как это делает человек. Могу отблагодарить за помощь. Спасибо.
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Эм... Наиболее близкий - это
Код:
MouseClick()

Задаём координаты А, количество кликов, скорость перемещения.
Затем, то же самое проделываем и для Б.

OffTopic:
Если, конечно, содержание веб страниц не меняется. Если меняется положение места куда надо тыкать, то надо рассматривать другие варианты, при том отдалённо напоминающие "человеческий клик" мышкой. Вот.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
inververs [?]
Перемещение курсора так, как это делает человек.
Что значит как человек, люди бывают разные, кто-то двигает быстро, кто то медленно, кто то по диагонали, а кто то “ходит конём” :smile:.

Опиши подробнее что тут имеется в виду, и почему нужно именно “как человек”?
 

Rampag33n

Новичок
Сообщения
3
Репутация
0
если координаты и последовательность кликов неизменна, можно просто записать движение руки, например в проге TinyTask 1.50

есть алгоритмы симуляции упругих-растяжимых тел, можно подвесить курсор на резинке
 

Mur

Осваивающий
Сообщения
132
Репутация
32
если координаты и последовательность кликов неизменна, можно просто записать движение руки, например в проге TinyTask 1.50
То же самое можно сделать и с помощью Au3Record, который идёт " в комлекте" ;)
 

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Я понял о чём он... Сам когда-то пробовал сделать что-то подобное :smile:
Картинка
Вот как двигает мышьку Автоит, в сравнении с человеческой рукой :smile:
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
_ToBe_
Ты прав, если делать стандартными функциями типа mousemove, то отрезки будут прямыми линиями, и курсор передвигаться с одинаковой скоростью по всей длине. А нужно именно так, как на рисунке, ну или близко к этому.


Добавлено:
Сообщение автоматически объединено:

Rampag33n [?]
если координаты и последовательность кликов неизменна
Как раз координаты всегда разные, поэтому и нужна функция.
 

creature

Новичок
Сообщения
2
Репутация
0
inververs, опишите математически траекторию движения курсора перемещаемого человеком для среднестатистического случая. И опубликуйте здесь — «функция имитирующая пользователя» не заставит себя ждать.

Иначе стандартное развитие диалога будет выглядеть так:
«— Вот вам функция, — Не похоже!; — Вот вам ещё одна! — Всё равно не похоже!»
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Вот геометрическое представление, нужно сделать что то похожее.
mmd.jpg
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
А вот решение - http://autoit-script.ru/index.php/topic,214.0.html ;D
ЗЫ: см. пример 2
 

Mur

Осваивающий
Сообщения
132
Репутация
32
creature
OffTopic:
А вы, я смотрю, знаток...

Вот полезная информация. Алгоритмы и всё прочее.
Самому интересно стало ;D
OffTopic:
Программно нашёл только Advanced Key and Mouse Recorder
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Mur [?]
---Zak---, так двигается-то вроде всё равно по прямой
wink.gif

Поменяй на что-нибудь другое:
Код:
Global Const $nSc = 10 ;разброс перемещения мыши
Global Const $nN = 10 ;число скачков

А у меня прыгает))))
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Мне кажется, чтобы имитировать руку человека, нужно сделать следующее:

1. Делаете передвижение между точками А и Б не по прямой, а по окружности большого радиуса.
2. Когда человек делает наведение мышки на кнопку, он совершает не одно, а два движения. Одним движением он проходит 90% расстояния и подводит мышку близко к кнопке (но почти всегда промахивается), вторым движением корректирует наведение и уже точно устанавливает на кнопку.
3. Добавляем немного шума в перемещение и скорость перемещения.
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Можно разбить задачу на 2
1) Сделать функцию передвигающую курсор с ускорением. В начале курсор двигается с ускорением, а к концу - постепенно замедляется.
2) Функция отклоняет траекторию движения от прямой.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Когда-от писал функцию ползающую по Кривым Безье единственная проблема была это, то что функции в AutoIt двигающие мышь и так имеют некоторое ускорение... т.е. от точки к точке сначала разгон потом замедление... т.е. не получить равномерную скорость если применять 2-3-4 функции... :(
 
Верх