1 (изменено: romzes96, 2017-11-01 02:30:57)

Тема: 2 вида движения мыши

Здравствуйте.
Не подскажите как сделать так что бы курсор возвращался на пиксель, не с помощью "MouseMove", а с помощью "moveAmount"?

Или я что-то путаю и это совершенно разные вещи?

Скрипт:

+ открыть спойлер
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.




#Persistent
SetBatchLines, -1  
SetTimer, S1, 0
Pause

*~XButton2::
Loop
	{
S1:
MouseGetPos, xpos, ypos
zX1:=xpos-100,zX2:=xpos+100,zY1:=ypos-100,zY2:=ypos+100
PixelSearch, VarX, VarY,zX1, zY1, zX2, zY2, 0xXXXXXX, 5, Fast RGB

if !ErrorLevel
{
;Sleep, 10
MouseMove, VarX, VarY
moveAmount := (moveAmount = 2) ? 3 : 0
mouseXY(moveAmount,1000)
MouseClick ,, ;	VarX, VarY,, 0
SetTimer, S1, Off
SetTimer, S2, -50
}
	If !GetKeyState("XButton2", "P")
		         Break
   }
Return
mouseXY(VarX,VarY)
{
DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}

End::ExitApp 

S2:
SetTimer, S1, On 
Return

Спасибо!

2

Re: 2 вида движения мыши

DllCall("mouse_event" применяется для игр, где команда MouseMove работает некорректно.
Поскольку mouse_event принимает относительные координаты для перемещения курсора, нужно узнать:
• координаты пикселя куда перемещаем,
• координаты курсора,
• вычесть из первых вторые и передать их в mouse_event для перемещения.