Razelto

how can i set mouse location without moving it

8 posts in this topic

#1 ·  Posted

hello i  am new to autoit forums and i need some help 

i want to set mouse location without moving it or use mousegetpos

my example is easy i need to declare 3 locations  and get them from other script

i have $X1 and $Y1 but what i need is  $location1 = $X1, $Y1 but i know won´t work like that

 

 

 

location.au3

Share this post


Link to post
Share on other sites



#2 ·  Posted

One option, you could employ an multidimensional array to hold the coordinate(s) then reference them as such.

;Enums just for ease of use
Global Enum $COORD_X, $COORD_Y

;Declare and Initilize Array
;                         X   Y
Local $aLocation[1][2]=[[780,600]]

MouseMove ($aLocation[0][$COORD_X], $aLocation[0][$COORD_Y])
ToolTip("mouse is here")

or

Global Enum $COORD_X, $COORD_Y
;Declare array and assign values "later"
Local $aLocation[1][2]
$aLocation[0][$COORD_X] = 780
$aLocation[0][$COORD_Y] = 600

MouseMove ($aLocation[0][$COORD_X], $aLocation[0][$COORD_Y])
ToolTip("mouse is here")

 

Not sure how much value that adds for you, but there's an example.

Share this post


Link to post
Share on other sites

#3 ·  Posted

thank you for your fast answer but i just reliazed it is not possible what i wated 

mousemove needs both x and y to be declared, 

mousemove($location1) would be a bad statement

 

Share this post


Link to post
Share on other sites

#4 ·  Posted

Correct, you have to provide both coords to the mousemove function.  You could make a custom function that parses and passes the coords to the mousemove func.

crude example:
 

#include <StringConstants.au3>

_MoveMouse("780,600")

Func _MoveMouse($sCoords = "0,0")
    $aCoords = StringSplit($sCoords,",",$STR_NOCOUNT)
    If UBound($aCoords) <> 2 Then Return SetError(1,0,0)
    Return MouseMove($aCoords[0],$aCoords[1])
EndFunc

 

Share this post


Link to post
Share on other sites

#5 ·  Posted

i was just thinking anout fuction and then call the function, i am learning ...

thanks for the help

Quote

Func location1()

$X1 =780
$Y1 = 600


MouseMove ($X1, $Y1)
ToolTip("mouse is here")
Sleep(2000)

EndFunc

Func location2()

$X2 =600
$Y2 = 708


MouseMove ($X2, $Y2)
ToolTip("mouse is here")
Sleep(2000)

EndFunc

location1()

Location2()

 

Share this post


Link to post
Share on other sites

#6 ·  Posted

I got it solved. I made 3 funcitions and then call them from main file.

I need to call them like 20 times that´s why i wated more simple not always typing coords.

Func location1()

$X1 =780
$Y1 = 100


MouseMove ($X1, $Y1)
Sleep(100)
MouseClick("left",$X1,$Y1,1)


EndFunc

Func location2()

$X2 =780
$Y2 = 225


MouseMove ($X2, $Y2)
Sleep(100)
MouseClick("left",$X2,$Y2,1)

EndFunc

Func location3()

$X3 =780
$Y3 = 350

MouseMove ($X3, $Y3)
Sleep(100)
MouseClick("left",$X3,$Y3,1)

EndFunc

Once again thanks and sorry for spamming,  I am new.

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

All good; if you want to improve your coding skillz, take another look at my example.  I created a custom (modular) function that I can provide coordinates to.  It's more efficient than copying and pasting more-or-less the same code over and over.  Write once, run many.

;untested
_MoveAndClickMouse(780,600)
_MoveAndClickMouse(780,225)
_MoveAndClickMouse(780,350)

Func _MoveAndClickMouse($X, $Y)
    MouseMove($X,$Y)
    Sleep(100)
    MouseClick("Left",$X,$Y,1)
EndFunc

Just a suggestion for consideration

Edited by spudw2k

Share this post


Link to post
Share on other sites

#8 ·  Posted

Your example works very well, but it does all together.

I want to  call them at specified time, using  timer, in other situations works flawless.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now