# Using GetMousePos for calculating a MouseClick

## Recommended Posts

Hello There!

I've encountered a small issue i just cant seem to program my way out of...

What im doing is:        ;or rather, what im trying to do is
Pixelsearch for a color, within a part of my screen,
If color is present, i will rightclick it, for a menu to appear,
in which i want to Leftclick an option. Simplicity itself.

The issue is that because this menu appears in different parts of my screen, its complicated to select the option i want to click.
There is no special color to it, and i cannot define the area in which to click, because the menu appears different places.
The only thing that is in common for the menu is that the Leftclick needs to be (lets say) 30pixels below the rightclick

.

What can be done,  but seemingly not by me, is to get the coordinates of the rightclick, and use them as the "starting point" from where the coordinates for the leftclick will be.
(Not sure if that makes sence, but maybe the code below will help you understand)

You guys like example codes, so therefore i will give it my best shot, and hope it proves usefull

$pos = Pixelsearch(200, 400, 200, 400, 0xFFFFFF) ;This color is what i need to rightclick to bring up the menu If not @Error then ;If the color is present (Mouseclick("Right",$pos[0], $pos[1], 1, 1) ;Rightclick it, to bring up menu ;Here comes the part i cannot get to work$x = MousegetPos(X)                                                          ;To get the Coordinate "X", so we can calculated with it for the position of the leftclick
$y = MousegetPos(Y) ; To get the Coordinate "Y", so that can be calculated with for the position of the leftclick MouseClick("Left",$x[0], $y-30[1], 1, 1) ;This was supposed to give me a leftclick that is 30pixels below the rightclick. (The MouseGetPos(X), may seem as a waste of space in this example, but in my script i will need both. Im only using one in the example, mainly so that i wont confuse myself, but also to make it easier to digest for you guys ) I have not been able to find any topic that covers this, but my apologies if such a topic already exist in the forums. Maybe while im at it, can i ask, what good does the [0] and [1] do, when using a "$variable" as coordinate?

- DiveHigh

$a = MouseGetPos() MouseClick("Left",$a[0],$a[1]-30) Edited by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window. #### Share this post ##### Link to post ##### Share on other sites To anyone else that might find this useful i did some more test. if you search for a color, and want to click it, but maybe with more randomized position of the click, then you can do:$pos = Pixelsearch(200, 400, 200, 400, 0xFFFFFF)
If not @Error then
MouseClick
("Left", $pos[0] +Random(-10,10),$pos[1]+Random(-10,10), 1, 1)

[+Random(-10,10)  = this is +/- 10 pixels within the area which the color was found]

Have Fun!
- DiveHigh

##### Share on other sites

Just out of curiosity: Which program do you try to automate with this script?

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-06-17 - Version 1.5.0.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

##### Share on other sites

@water: may be a browser game

##### Share on other sites

This was used for a project in my class where we had a week to "create intelligence"..

## Create an account

Register a new account

• ### Similar Content

• Hi All,
I am trying to login into our application using AutoIT. When I launch the application a splash screen appears and the login screen goes behind it. At this point the script pauses and I loose control of everything. I have literally tried everything for the past two days but nothing has worked yet. Any suggestions would be appreciated.
RunWait("\\mchsv411.siplaceworld.net\splmshare\int00\conf\start_apps\windows\start_nx110.bat en portal_client int00 tc112", "", @SW_MAXIMIZE)
AutoItSetOption("SendKeyDelay", 200)
Local $hWnd = WinWaitActive("Teamcenter Login") MouseClick("left", @DesktopWidth / 2, @DesktopHeight / 2) The splash screen has title "Teamcenter" and is static. I tried to click on the center to get control of login window. I have tried WinActivate, WinSetState, ControlCommand and a lot of other things. • By lonardd Hi, I have a very strange problem concerning MouseClick function. I need to start Control Panel, navigate it on the Display Section (Adjust screen resolution link), click on it, and from the next Dialog choose Intel Graphic tool tab and navigate into it when it opens. I wasn't using MouseClick() at first when I tried to use Control IDs, but I was fed up with the Autoit Window Info poor and inaccurate info (It flickers and the moment I click on the control the control ID and class disappear) so I ended up choosing the easiest way. The code I'm posting worked OK until two weeks ago, the mouse clicks were accurately performed and the Script reached the end with no errors...and I was happy. All of a sudden, between one try and the other, I noticed the cursor not flying exactly where it was supposed to, namely to the Control Panel ->Display->Adjust screen resolution link but it clicked some 30 pixels below and some 30 pixels to the left, choosing obviously and undesired function and from that point it screwed the whole thing up. And from that moment onward, it seems I can no longer regain the mouse to click on that sequence. Could it be because my Control Panel ->Display form moved slightly from one test to another and therefore I got that small offside? If you believe this is the reason, I should then re position the Control Panel ->Display window to 0,0 and recalculate all the clicks. do you have a suggestion? Thanks a lot Dave RotateDisplays.au3 • error code >Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3.exe "D:\Scripts\Tests\Test.au3" --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop +>16:23:40 AutoIt3.exe ended.rc:0 +>16:23:40 AutoIt3Wrapper Finished. >Exit code: 0 Time: 0.6734 HotKeySet("{F4}", _myExit()) Global$aCoordinates1[2] = [499, 582] Global $aCoordinates2[2] = [672, 614] While(1)$instrument = PixelSearch(602, 439, 601, 438, 0x434343, 1)     if not(@error) Then         $musicscore = PixelSearch(1185, 529, 1184, 528, 0xDDA03B, 1) If not(@error) Then MouseMove($musicscore[0], $musicscore[1], 3) Sleep(500) MouseClick("RIGHT",$musicscore[0], $musicscore[1], 1, 1) EndIf EndIf MouseClick("LEFT", random($aCoordinates1[0], $aCoordinates1[1]), Random($aCoordinates2[0], \$aCoordinates2[1]))    Sleep(Random(304000, 309043)) WEnd Func _myExit()     Exit EndFunc Any help are highly appreciatet... :-)

Dequality.
• By c1one
Something simple enough, and I am sure it's an oversight, but I have not been able to track this down. The entire script is attached, but here is the point of failure.
Note: I am getting the "Error: subscript used on non-accessible variable" but I thought the initial line of:
AutoItSetOption('MouseCoordMode', 0)
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Install updates (minimized and updating for many minutes)
; Wait for updates to complete
WinWait("ProSeries Update")
; Wait just over 9 minutes to ensure popup is ready (test alternative to WinWait)
Sleep(550000)
; Set focus on Product Licenses window
WinActivate("ProSeries Update")
; Send Mouse Click to Install Now button
MouseClick ( "left" [, 581, 362 [, clicks = 1 [, speed = 10]]] )
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Thanks for any insights!
c1one
ProSeries2017_No_Customer_Info.au3
Hi!
I have a button where I need to close it!
I was doing through  clicking same position in screen but there are some id's that have different sizes.
What are the possible ways to click this closable button?
Is there a way to close it through id? Is there a way to get it's position through it's ID?

×

• Wiki

• Back

• #### Beta

• Git
• FAQ
• Our Picks
×
• Create New...