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: Догадываюсь для чего это.
Когда я решал противоположную задачу(следил не подходит ли кто к моему компьютеру), я просто установил пару камер в своём кабинете .