# PixelSearch, Move Mouse to..

## Recommended Posts

Hey guys (and girls if any ^^)

I've started Playing around with PixelSearch, and after being shocked that it is not using X,Y i found it far smarter^^

For the Simple Version:

I need to PixelSearch the Screen for a Color. And Then Move the Mouse to that place.

```Sleep(3000)
\$Color = PixelSearch(0, 0, 1000, 1000, 0xE94434, 10)
If Not @error Then
MouseClick("left", \$Color,\$Color)
Else```
<- The Variable For the Mouse is also Not Working How can i move the Mouse to a Variable instead of Set Cordinates?

There is more than one Pixel of The Color.

And There will Most Likely Be More Than One Area With Them on the Screen, but the Mouse is only Supposed To Move to One Area with the Pixels.

So i think i will split the The Screen Into a Grid and Run the PixelSearch Function Until i Find One Window with The Color.

```\$Color = PixelSearch(0, 0, 100, 100, 0xE94434, 10)
If Not @error Then
Else```

I need the Script to "Understand 3d"

So i need to Calculate the Range between The Pixelsearch Window and the Center of The Screen.

Got any Help for me:) ?

Pieces of Script, Tutorials, articles ?

Thx for the Help !

##### Share on other sites

In Autoit Help under PixelSearch:

Returns a two-element array of pixel's coordinates. (Array[0] = x, Array[1] = y)

##### Share on other sites

In Autoit Help under PixelSearch:

Returns a two-element array of pixel's coordinates. (Array[0] = x, Array[1] = y)

So you are Saying that:
```\$Color = PixelSearch(500, 300, 800, 600, 0x634f30, 10)
If Not @error Then
MouseClick("Right",\$Color,1)
Else
MsgBox(0, "Error", "Error")
EndIf```
???

Because That just Moves the Mouse to x= 0 y= 0 cordinates

##### Share on other sites

So you are Saying that:

```\$Color = PixelSearch(500, 300, 800, 600, 0x634f30, 10)
If Not @error Then
MouseClick("Right",\$Color,1)
Else
MsgBox(0, "Error", "Error")
EndIf```
???

Because That just Moves the Mouse to x= 0 y= 0 cordinates

Do you know how arrays work?

PixelSearch returns an array (Array[0] = x, Array[1] = y)

MouseClick syntax is MouseClick( "button" , x, y)

Comeon, this is pretty simple...

##### Share on other sites

I can't see how i make the mouse use pixelsearch array,sorry, just started programming saturday

Edit: but that is not the Big problem I figure that one out, thx for the Reminder of the Help File

Edited by Schoening

##### Share on other sites

Look at PixelSearch and MouseClick in the Help file. There's working code examples for just about every AutoIt native function in fact.

- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

##### Share on other sites

Ok, I have figured the PixelSearch Array thing out now.. Sorry I Posted and Started Searching AFTER !

## Create an account

Register a new account

• ### Similar Content

• By Borges
Sorry if I posted in wrong section but...
how can I do something like that?

If PixelSearch(660, 30, 670, 38, 0x242424, 0 , 1) <> @error Then
Send("{F3}")
Sleep(200)
ElseIf PixelSearch(800, 30, 810, 38, 0x242424, 0 , 1) <> @error Then
Send("{F4}")
Sleep(200)
EndIf

• By Gowrisankar
Dear members,
I am working on a project where, emails from outlook are to be read and moved to various folders within the mailbox, based on the content of the emails.
I used the below code for moving mails. It works fine when I run it against individual mail ids. But when I run it on Shared mailbox, the mails are not moved to respective folders.
_OL_ItemMove(\$oOutlook, \$sEntryId, Default, \$sDestinationFolder) The value of \$sEntryId is saved in an excel report initially. The current process reads the \$sEntryId from the excel and passes it to "_OL_ItemMove" statement.
Requesting the guidance of the forum members in this issue.
• By nacerbaaziz
Hi dears
I've got a question in creating tabs in autoit
Usually in other programs you can move between tabs by pressing ctrl + tab or ctrl + shift + tab
I tried to create a window  which have a multy  tab but when i press one of the shortcuts
it does not move between the tabs
Is there an option to enable or disable this
Greetings
this is the example i tryed

#include <GUIConstants.au3> #include <MsgBoxConstants.au3> #include <TabConstants.au3> #include <ComboConstants.au3> #include <WindowsConstants.au3> #include <GuiComboBox.au3> effectsSettings() func effectsSettings() local \$echoCombo[6], \$reverbCombo[5],  \$CHORUSCombo[8], \$flangerCombo[8], \$paramEQCombo[4], \$distortionCombo[6], \$gargleCombo[3] \$EffWindow = GUICreate("efects settings", 400, 400, -1, -1, \$WS_TABSTOP) local \$BtOK = GUICtrlCreateButton("ok", 5, 360, 50, 30, 0x01) GUIStartGroup("") local \$BTCancel = GUICtrlCreateButton("cancel", 340, 360, 50, 30) GUIStartGroup("") local \$effectTabs =     GUICtrlCreateTab(10, 10, 380, 70) GUICtrlSetState(-1, \$GUI_focus)     GUICtrlCreateTabItem("echo") GUICtrlCreateLabel("fWetDryMix", 50, 100, 100, 60) \$echoCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("fFeedback", 180, 100, 100, 60) \$echoCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUICtrlCreateLabel("fLeftDelay", 290, 100, 100, 60) \$echoCombo[3] = GUICtrlCreateCombo("", 300, 110, 80, 40) GUICtrlCreateLabel("fRightDelay", 50, 180, 100, 60) \$echoCombo[4] = GUICtrlCreateCombo("", 60, 190, 80, 40) GUICtrlCreateLabel("lPanDelay", 180, 180, 100, 60) \$echoCombo[5] = GUICtrlCreateCombo("", 190, 190, 80, 40)     GUICtrlCreateTabItem("reverb") GUICtrlCreateLabel("fInGain", 50, 100, 100, 60) \$ReverbCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("fReverbMix", 180, 100, 100, 60) \$ReverbCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUICtrlCreateLabel("fReverbTime", 290, 100, 100, 60) \$ReverbCombo[3] = GUICtrlCreateCombo("", 300, 110, 80, 40) GUICtrlCreateLabel("fHighFreqRTRatio", 50, 180, 100, 60) \$ReverbCombo[4] = GUICtrlCreateCombo("", 60, 190, 80, 40)     GUICtrlCreateTabItem("chorus") GUICtrlCreateLabel("fWetDryMix", 50, 100, 100, 60) \$ChorusCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("fDepth", 180, 100, 100, 60) \$ChorusCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUICtrlCreateLabel("fFeedback", 290, 100, 100, 60) \$ChorusCombo[3] = GUICtrlCreateCombo("", 300, 110, 80, 40) GUICtrlCreateLabel("fFrequency", 50, 180, 100, 60) \$ChorusCombo[4] = GUICtrlCreateCombo("", 60, 190, 80, 40) GUICtrlCreateLabel("lWaveform", 180, 180, 100, 60) \$ChorusCombo[5] = GUICtrlCreateCombo("", 190, 190, 80, 40) GUICtrlCreateLabel("fDelay", 290, 180, 100, 60) \$ChorusCombo[6] = GUICtrlCreateCombo("", 300, 190, 80, 40) GUICtrlCreateLabel("lPhase", 50, 260, 100, 60) \$ChorusCombo[7] = GUICtrlCreateCombo("", 60, 270, 80, 40)     GUICtrlCreateTabItem("flanger") GUICtrlCreateLabel("fWetDryMix", 50, 100, 100, 60) \$FlangerCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("fDepth", 180, 100, 100, 60) \$FlangerCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUICtrlCreateLabel("fFeedback", 290, 100, 100, 60) \$FlangerCombo[3] = GUICtrlCreateCombo("", 300, 110, 80, 40) GUICtrlCreateLabel("fFrequency", 50, 180, 100, 60) \$FlangerCombo[4] = GUICtrlCreateCombo("", 60, 190, 80, 40) GUICtrlCreateLabel("lWaveform", 180, 180, 100, 60) \$FlangerCombo[5] = GUICtrlCreateCombo("", 190, 190, 80, 40) GUICtrlCreateLabel("fDelay", 290, 180, 100, 60) \$FlangerCombo[6] = GUICtrlCreateCombo("", 300, 190, 80, 40) GUICtrlCreateLabel("lPhase", 50, 260, 100, 60) \$FlangerCombo[7] = GUICtrlCreateCombo("", 60, 270, 80, 40)     GUICtrlCreateTabItem("paramatric eq") GUICtrlCreateLabel("fCenter", 50, 100, 100, 60) \$parameqCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("fBandwidth", 180, 100, 100, 60) \$ParamEqCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUICtrlCreateLabel("fGain", 290, 100, 100, 60) \$parameqCombo[3] = GUICtrlCreateCombo("", 300, 110, 80, 40)     GUICtrlCreateTabItem("distortion") GUICtrlCreateLabel("fGain", 50, 100, 100, 60) \$distortionCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("fEdge", 180, 100, 100, 60) \$distortionCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUICtrlCreateLabel("fPostEQCenterFrequency", 290, 100, 100, 60) \$distortionCombo[3] = GUICtrlCreateCombo("", 300, 110, 80, 40) GUICtrlCreateLabel("fFrequency", 50, 180, 100, 60) \$distortionCombo[4] = GUICtrlCreateCombo("", 60, 190, 80, 40) GUICtrlCreateLabel("fPostEQBandwidth", 180, 180, 100, 60) \$distortionCombo[5] = GUICtrlCreateCombo("", 190, 190, 80, 40)     GUICtrlCreateTabItem("gargle") GUICtrlCreateLabel("dwRateHz", 50, 100, 100, 60) \$gargleCombo[1] = GUICtrlCreateCombo("", 60, 110, 80, 40) GUICtrlCreateLabel("dwWaveShape", 180, 100, 100, 60) \$gargleCombo[2] = GUICtrlCreateCombo("", 190, 110, 80, 40) GUISetState(@sw_show, \$EffWindow) While 1 Switch GUIGetMSG() case \$GUI_Event_close, \$BTCancel exit EndSwitch Wend return "" endFunc
• By tiye0405
Hello,

I currently have a problem that deals with moving the mouse to a given location + or - a certain distance.
\$search1 =_WaitForImageSearch("envelope.bmp", 10, 1, \$x, \$y, 20)
\$search2 =_WaitForImageSearch("envelope2.bmp", 10, 1, \$x, \$y, 20)

If \$search1 = 1 Then
Sleep(100)
MouseMove(\$x, \$y, 10)
sleep(99)
MouseClick("left")
Sleep(99)
ElseIf \$search2 = 1 Then
Sleep(100)
MouseMove(\$x, \$y2, 10)
sleep(99)
MouseClick("left")
Sleep(100)
Else
Sleep(150)
MouseMove(\$x2, \$y, 10)
Sleep(150)
MouseClick("left")
Sleep(150)
EndIf
The problem about this is that i defined \$x2 = \$x - 175  and \$y2 = \$y + 35
I got these numbers ( 175 and 35) with the autoit helper and just subtracted point where it is to the point its supposed to move but it doesnt work.

is there any proper way to find the distance between 2 points in pixels?

Imgsearch doesnt always work for this picture so i want it to have a backup

edit: could it be that the definition of \$x and \$y  from the previous image search arent there anymore and thats why it moves my mouse to strange places?
is there a way to preserve the \$x \$y from the previous img search untill the next succesful one?

• By Gowrisankar
Dear members,
I'm trying to move unread mails from Inbox to a different folder using OutlookEx UDF.
But its not working for me. I'm not sure what mistake I do.
I get the error code 6 when the following is executed. From the UDF it is observed that  "No or an invalid item has been specified".
Note : The UDF version is 1.3.3.1. AutoIt version (v3.3.14.2).
#include <OutlookEX.au3> Global \$oOutlook = _OL_Open() If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended) Global \$aOL_Item = _OL_ItemFind(\$oOutlook, "*\Inbox", \$olMail, "[UnRead]=True", "", "", "Subject", "", 1) If \$aOL_Item[0][0] = 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemMove Example Script", "Could not find a task item in folder 'Outlook-UDF-Test\SourceFolder\Tasks'. @error = " & @error) _ArrayDisplay(\$aOL_Item, "OutlookEX UDF: _OL_ItemFind Example Script - Unread mails") _OL_ItemMove(\$oOutlook, \$aOL_Item[1][0], Default, "*\Outlook-UDF-Test\TargetFolder\Mail") If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemMove Example Script", "Error moving specified task. @error = " & @error) Any help is deeply appreciated. Thanks in advance.
Thanks and regards,
Gowrisankar R.
×

• Wiki

• Back

• Git