1

Тема: AHK: движение мышки

Уважаемые форумчане, помогите пожалуйста, много раз пытался разобраться, но в итоге выходило без движения мышки (рандомные перемещения)
Нужно сделать AHK скрипт по принципу произвольного движения мышки:
Скрипт длится произвольное количество времени (от 30 секунд до 3 минут)
Все это время разбивается на отрезки времени разной продолжительности допустим на 10-30 отрезков
В каждый из этих отрезков мышка движется в произвольном направлении с произвольной скоростью (незначительно меняя направление движения, изображая человекоподобность действий), останавливается и дальше к следующему отрезку (где мышка уже кардинально меняет направление движения), затем к следующему и т.д. и т.п.
Всё действо происходит в заданных размерах окна (левая верхняя координата 0,152, правая нижняя 1024,710)
После выполнения всех действий во всех отрезках, мышка движется (из последнего положения) в сторону кнопки, координаты которой 1007,104

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

2

Re: AHK: движение мышки

По поиску нашел аналогичную тему, но её содержание почему-то кем-то существенно подредактировано...
http://forum.script-coding.com/viewtopic.php?id=5089

3

Re: AHK: движение мышки

OFF: Догадываюсь для чего это.

4

Re: AHK: движение мышки

OFF:

Abricos пишет:

По поиску нашел аналогичную тему, но её содержание почему-то кем-то существенно подредактировано...

Были зачищены сообщения участников с малым числом постов и сами такие учётные записи (конкретные цифры мне неизвестны). В результате мы видим то, что видим.

5

Re: AHK: движение мышки

^!1::
L1:
Random, randt, 30, 180
Timet := 1000
Timet *= %randt%
L2:
SetTimer, L3, %Timet%
   {
   Random, randx, 1, 1023
   Random, randy, 153, 709
   Random, rands, 0, 100
   Random, randl, 5, 50
   Random, rand1, 1, 10
   Random, rand2, 1, 10
   Random, randxt, 1, 500
   Random, randyt, 1, 250
   MouseMove %randx%, %randy%, %rands%
   x := %randx%
   y := %randy%
   if rand1 in 2,4,6,8,10
      x -= %randxt%
   if rand1 in 1,3,5,7,9
      x += %randxt%
   if rand2 in 2,4,6,8,10
      y -= %randyt%
   if rand2 in 1,3,5,7,9
      y += %randyt%
   MouseMove %x%, %y%, %rands%
}
L3:
MouseMove 1007, 104
Times := %randt%
Times /= 10
Sleep %Times%
Goto l1
Escape::ExitApp

Что успел до отхода ко сну... Завтра если появиться время еще попробую что-нибудь придумать.

6

Re: AHK: движение мышки

2Nikva
Почему-то у меня на компьютере никаких действий не происходит, в чём может быть проблема?

7 (изменено: Александр_, 2012-01-22 02:44:15)

Re: AHK: движение мышки

Abricos пишет:

Скрипт длится произвольное количество времени (от 30 секунд до 3 минут)
Все это время разбивается на отрезки времени разной продолжительности допустим на 10-30 отрезков

Random WorkTime, 10, 180 ;псевдослучайное число, являющееся временем выполнения в секундах.
Random Interval, 10, 30 ;количество интервалов
msgbox Время: %WorkTime%, Интервалы: %Interval%
loop %Interval%
   Interval%a_index% := 0
loop %WorkTime%
{
   Random x, 1, Interval
   Interval%x%++
}

Теперь у нас есть переменная Interval, содержащая количество интервалов и соответствующее количество переменных Interval1, Interval2, и т.д. содержащих продолжительность каждого интервала в секундах.

Abricos пишет:

В каждый из этих отрезков мышка движется в произвольном направлении с произвольной скоростью (незначительно меняя направление движения, изображая человекоподобность действий), останавливается и дальше к следующему отрезку (где мышка уже кардинально меняет направление движения), затем к следующему и т.д. и т.п.
Всё действо происходит в заданных размерах окна (левая верхняя координата 0,152, правая нижняя 1024,710)

Может "мышка движется к произвольной точке в указанной области"? Если "да", то MouseMove этим и занимается, правда скорость перемещения можно оценить только эмпирически. Но можно написать свою функцию, которая будет двигать мышь в определённую точку за определённое время. Простейший пример такой функции:

MyMouseMove(x, y, time)
{
   StartTime := A_TickCount
   FinTime := StartTime + time
   MouseGetPos, CurX, CurY
   DeltaX := x-CurX
   DeltaY := y-CurY
   while(FinTime>A_TickCount)
   {
      Coef := (A_TickCount-StartTime)/time
      MouseMove, CurX+DeltaX*Coef, CurY+DeltaY*Coef, 0
   }
}

она двигает курсор равномерно(на самом дле не очень равномерно ) по прямой, при необходимости можно задать и другую кривую движения и ввести отклонения от траектории. Вообще-то курсор почти всегда будет немного не доходить до указанных координат, если это принципиально, то стоит добавить в конец команду перемещения в цель(MouseMove, x, y, 0), но это увеличит погрешность во времени выполнения(можно компенсировать, просто оставив запас в переменной FinTime). Полный пример:

CoordMode, Mouse, Screen
Random WorkTime, 10, 180 
Random Interval, 10, 30 
loop %Interval%
   Interval%a_index% := 0
loop %WorkTime%
{
   Random x, 1, Interval
   Interval%x% += 1000
}
loop %Interval%
{
   Random x, 0, 1024
   Random y, 152, 710
   MyMouseMove(x, y, Interval%A_Index%)
}
MyMouseMove(1007, 104, 1000)
return

MyMouseMove(x, y, time)
{
   StartTime := A_TickCount
   FinTime := StartTime + time
   MouseGetPos, CurX, CurY
   DeltaX := x-CurX
   DeltaY := y-CurY
   while(FinTime>A_TickCount)
   {
      Coef := (A_TickCount-StartTime)/time
      MouseMove, CurX+DeltaX*Coef, CurY+DeltaY*Coef, 0
   }
}

Замечу, что реальное время выполнения будет больше, чем WorkTime, поскольку часть команд ко времени не привязана, а MyMouseMove() выполняется не менее чем time миллисекунд. Если нужна бОльшая точность, то нужно добавить функции синхронизации.

Gray пишет:

OFF: Догадываюсь для чего это.

Когда я решал противоположную задачу(следил не подходит ли кто к моему компьютеру), я просто установил пару камер в своём кабинете .

8 (изменено: Abricos, 2012-01-22 14:45:18)

Re: AHK: движение мышки

Может банально, соединил 3 части Вашего кода, но не заработало, написал ошибку, этого не нужно было делать?

9

Re: AHK: движение мышки

Следует использовать код идущий после слов Полный пример:

10

Re: AHK: движение мышки

Спасибо, что-то я не посмотрел как следуем, извиняюсь! А как сделать более реалистичные движения? Чтобы не по прямой, а по случайно траектории?

11

Re: AHK: движение мышки

Abricos пишет:

А как сделать более реалистичные движения? Чтобы не по прямой, а по случайно траектории? :)

Не знаю кто как, а я мышку по прямой перемещаю, может не совсем по прямой, но уж точно не по случайной траектории :D. Траекторию можно задать любую, в функции MyMouseMove.

12 (изменено: Abricos, 2012-01-22 22:10:50)

Re: AHK: движение мышки

Ну хотя бы не совсем по прямой, а то так четко по прямой вряд ли человеку получится провести) небольшое отклонение от прямой возможно реализовать?

13

Re: AHK: движение мышки

Судя по молчанию это очень сложно и муторно или всё таки вполне реализуемо?

14

Re: AHK: движение мышки

Это бессмысленно
Давайте определим «небольшое отклонение от прямой».

15

Re: AHK: движение мышки

OFF:

Abricos пишет:

Судя по молчанию это очень сложно и муторно...

Видимо сказывается отсутствие финансирования.

16

Re: AHK: движение мышки

Abricos пишет:

Судя по молчанию это очень сложно и муторно или всё таки вполне реализуемо?

Я уже два раза написал- составляй нужное уравнение движения и в путь. Например выбираем точку около прямой из начала пути в конец(например отклоняющуюся на 0%-10% от неё) и движемся по параболе из начала пути, через эту промежуточную точку в конец.

17 (изменено: Abricos, 2012-01-24 14:31:35)

Re: AHK: движение мышки

От финансовой компенсации за потраченное время я не отказываюсь, что вы, это вопрос времени, чтобы я успел задать все вопросы, которые мне важны
Небольшое отклонение от прямой, это как в минус, так и в плюс 2-7% отклонение, чтобы движения не выглядели такими роботизированными. Чем больше вариантов отклонения при движении тем лучше, на выходе нужно просто получить максимальную похожесть с человеческими движениями мышки, если просто задать стандартное отклонение в движении в n% от прямой, все равно будет видно, что мышка слишком одинаковые движения делает для человека...

18

Re: AHK: движение мышки

Коллеги, предложите коллеге Abricos скрипт, который тупо записывает перемещения мыши с заданной дискретностью в файл в течение дня, и скрипт, который на следующий день по этому файлу будет тупо воспроизводить те же движения мыши . Безо всяких искусственных интеллектов.

19 (изменено: creature.ws, 2012-01-24 15:16:33)

Re: AHK: движение мышки

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

Для «имитации работы», способной обмануть наблюдающего по rdp, целесообразнее использовать нечто вроде: 1, 2.

20

Re: AHK: движение мышки

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

21

Re: AHK: движение мышки

Abricos, как вовремя Вы вспомнили об этой малосущественной детали…

22

Re: AHK: движение мышки

Так я вроде знаю как это реализовывается, благо в моем скрипте "телепортов" мышки все вполне срабатывает

23

Re: AHK: движение мышки

Я что-то не так сказал?

24

Re: AHK: движение мышки

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

25

Re: AHK: движение мышки

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

26

Re: AHK: движение мышки

Помогите тогда пожалуйста, если курсором управляю я или другая программа (из предложенных), как сделать, чтобы при попадании на пиксель определенной размера был клик мышкой допустим, спасибо!

27

Re: AHK: движение мышки

Пиксель определённого размера? о_О

28

Re: AHK: движение мышки

тьфу, опечатался, определенного цвета

29

Re: AHK: движение мышки

Читайте про команду PixelGetColor. Где-то на форуме русский перевод лежит.

30 (изменено: Abricos, 2012-02-03 17:27:24)

Re: AHK: движение мышки

Так, я чуть-чуть помудрил и сделал ориентиры для движений мышкой, возможно ли заставить программу ориентироваться по цветам, т.е. есть много красных пятен, к любому из них (естественно не каждый раз к одному и тому же) нужно человекоподобно подкатить мышку (не по прямой, а именно максимально человекоподобно) и кликнуть допустим мышкой
В конце скрипта у нас скрипт должен определить любое из синих пятен на экране, также человекоподобно подкатить мышку и также кликнуть, ну либо клик по заданным координатам (можно делать одно из действий (при этом проивозольно принимать решение, либо клик по координатам, либо клик по синему цвету)
Т.е. у меня стоят две задачи:
1. человекоподобное движение мышкой
2. ориентация по цветам (естественно номера цветов для ориентиров есть)

Всё ещё готов предложить некоторые деньги за помощь. Готов перевести разработчику Александру_ за потраченное время на неправильно изначально мной сформулированный вопрос, Александр_ пришлите пожалуйста способ благодарности Вам в виде электронного кошелька или мобильного номера куда я могу положить деньги!

31

Re: AHK: движение мышки

Если кто-то готов взяться серьезно за мою задачу, я готов написать ТЗ полного скрипта и постараюсь при этом максимально (в пределах моих возможностей) компенсировать потраченное разработчиком время...

32

Re: AHK: движение мышки

Ну, напиши мне в личку ТЗ и бюджет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

33

Re: AHK: движение мышки

Отправил на почту

34

Re: AHK: движение мышки

Abricos пишет:

Если кто-то готов взяться серьезно за мою задачу, я готов написать ТЗ полного скрипта и постараюсь при этом максимально (в пределах моих возможностей) компенсировать потраченное разработчиком время...

А почему бы его тут не поместить? тогда во-первых каждый сможет попробовать свои силы, а во-вторых решение может ещё кому-то пригодится(насколько я понял проект не секретный).

Abricos пишет:

Готов перевести разработчику Александру_ за потраченное время на неправильно изначально мной сформулированный вопрос, Александр_ пришлите пожалуйста способ благодарности Вам в виде электронного кошелька или мобильного номера куда я могу положить деньги!

Яндекс- 41001690976576. WM не помню, помню только как с поддельными паспортами аттестаты получали .

35 (изменено: Abricos, 2012-02-05 14:00:31)

Re: AHK: движение мышки

Вспомните пожалуйста WMR кошелек) или номер телефона пришлите на sekotka(собак)mail.ru, а то у меня нет возможности на ЯД деньги кинуть)
с ТЗ чуть позже выложу тут и результат работы, если будет)