Что нового

[Мышь, клавиатура] Движение по окружности

oneDmitry

Новичок
Сообщения
55
Репутация
3
Возможно ли сделать в Auto It движение мыши по окружности ?
Если можно, приведите пример пожалуйста :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
$iXCenter = @DesktopWidth / 2
$iYCenter = @DesktopHeight / 2
$iRadius = 50
$pi = 3.14159265358979
$iDelay = 5000 / 360
BlockInput(1)
For $i = 1 to 360
	MouseMove($iXCenter + $iRadius * Cos($i*$pi/180), $iYCenter + $iRadius * Sin($i*$pi/180), 0)
	Sleep($iDelay)
Next
BlockInput(0)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,484
И вот ещё, более "крутой" пример ;D

Код:
$MsPaintPid = Run("mspaint")

WinWait("[CLASS:MSPaintApp]")
WinActivate("[CLASS:MSPaintApp]")
WinWaitActive("[CLASS:MSPaintApp]")

BlockInput(1)

_MouseMoveCircle(220, 180, 100, 625, 1) ;Лицо
Sleep(200)
_MouseMoveCircle(180, 155, 100, 100, 1) ;Улыбка (кривая :D)
Sleep(400)
_MouseMoveCircle(175, 140, 20, 625, 1) ;Левый глаз
Sleep(20)
_MouseMoveCircle(260, 140, 20, 625, 1) ;Правый глаз
Sleep(400)
_MouseMoveCircle(182, 145, 10, 625, 1) ;Зрачёк левого глаза
Sleep(20)
_MouseMoveCircle(268, 145, 10, 625, 1) ;Зрачёк правого глаза

BlockInput(0)

Func _MouseMoveCircle($iXPos, $iYPos, $iRadius, $iTimeExp, $iMouseClick=0); x coord, y coord, radius, time to loop (milliseconds)
    Local $TimeInit = TimerInit()
	Local $xPosMov, $yPosMov
    Local $MouseClick_Mark = 1
	
	Do
        $TimeDiff = TimerDiff($TimeInit)
		
		$xPosMov = $iXPos + ($iRadius * Sin($TimeDiff/100))
		$yPosMov = $iYPos + ($iRadius * Cos($TimeDiff/100))
		
		MouseMove($xPosMov, $yPosMov, 1)
		If $MouseClick_Mark = 1 And $iMouseClick <> 0 Then MouseDown("Left")
		$MouseClick_Mark = 0
    Until $TimeDiff > $iTimeExp
	
	If $iMouseClick <> 0 Then MouseUp("Left")
EndFunc
 
Автор
O

oneDmitry

Новичок
Сообщения
55
Репутация
3
Kaster сказал(а):
Код:
$iXCenter = @DesktopWidth / 2
$iYCenter = @DesktopHeight / 2
$iRadius = 50
$pi = 3.14159265358979
$iDelay = 5000 / 360
BlockInput(1)
For $i = 1 to 360
	MouseMove($iXCenter + $iRadius * Cos($i*$pi/180), $iYCenter + $iRadius * Sin($i*$pi/180), 0)
	Sleep($iDelay)
Next
BlockInput(0)
при замене MuseMove на MouseClick почему то он не по тем координатам перемешается =(
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Потому, что у MouseClick() другой формат вызова.

MouseClick ( "button" [, x, y [, clicks [, speed ]]] )
 
Автор
O

oneDmitry

Новичок
Сообщения
55
Репутация
3
Ребят а неподскажите как сделать что бы курсор двигался до бесконечности по окружности, через While пробовал, не очень удобно, т.к у меня сделано движение по окружности через функцию, если использовать while, то не срабатывает горячия клавиша что бы остановить процедуру


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

решил собственными силами

Код:
$ichek = 0
Func Off()
	$ichek = 0
    ;Sleep(2147483647)
EndFunc
Func On()
	$ichek = 1
	Play()
EndFunc
Func Play()
while $ichek = 1
HotKeySet ("{F8}", "Off")
$iXCenter = @DesktopWidth / 2
$iYCenter = @DesktopHeight / 2
$iRadius = 50
$pi = 3.14159265358979
$iDelay = 5000 / 360
BlockInput(1)
For $i = 1 to 360
    MouseMove($iXCenter + $iRadius * Cos($i*$pi/180), $iYCenter + $iRadius * Sin($i*$pi/180), 0)
    Sleep($iDelay)
Next
BlockInput(0)
WEnd
EndFunc

Func ScriptExit()
    Exit
EndFunc

While 1

HotKeySet ("{F5}", "ScriptExit")
HotKeySet("{F1}", 'On')
 

SyDr

Сидра
Сообщения
651
Репутация
158
Оно работает? У тебя в конце даже WEnd не хватает
Код:
HotKeySet ("{F5}", "ScriptExit")
HotKeySet("{F1}", 'OnOff')
$bNeed = False
While 1
	Sleep(1000)
WEnd

Func OnOff()
    $bNeed = Not $bNeed
    Play()
EndFunc

Func Play()
	While $bNeed
	$iXCenter = @DesktopWidth / 2
	$iYCenter = @DesktopHeight / 2
	$iRadius = 50
	$pi = 3.14159265358979
;~ 	$iDelay = 5000 / 360 ;?
	$iDelay = 10
;~ 	BlockInput(1)
		For $i = 1 to 360
			MouseMove($iXCenter + $iRadius * Cos($i*$pi/180), $iYCenter + $iRadius * Sin($i*$pi/180), 0)
			Sleep($iDelay)
		Next
;~ 	BlockInput(0)
WEnd
EndFunc

Func ScriptExit()
    Exit
EndFunc
 
Автор
O

oneDmitry

Новичок
Сообщения
55
Репутация
3
работает, скорее всего я просто криво скопировал
 
Верх