Search the Community

Showing results for tags 'pixelsearch'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Chat
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • Forum
  • AutoIt

Calendars

  • Community Calendar

Found 21 results

  1. Hello, I am new to both Programming and this forum. I have done a few tiny projects that were successful and fell in love with Autoit. So now I am trying to learn new things as I go. I have read the Help docs on my following question, I have gone thru all of that. and I am sure as soon as you see my code you will be saying OMG why did he do that, or OMG how can you forget to add this.. But when your new you take the path of least resistance to get the outcome you want. SETUP: I am trying to make a code that will open a piece of software, then open a browser (which has a handful of tabs already open) go to a web page (one of the tabs) and search an area of the web page for a specific color, if that color is found I want it to close the browser and go back and start again. If that color is not found on that page I want it to switch tabs and search that page for the color. If the color is found on that page I want it to close the browser and start again. If the color is not found on either page, I want it to open another browser and go to website and do some things I will add once i get past this obstacle. I already have it almost there my code will open my software, open the browser, do the searches, find or not find the color, the part I am having trouble with is the if and else and what happens if and what it does if it does not. So the first code I have does everything I want except if it finds the color on the first run it closes the browser, but then when it starts the process again it doesnt check for the color. its like it skips the scanning part and goes straight to the opening of the second browser and finishes the code. Run( "C:\Programs\myprogram.exe", "", @SW_SHOWDEFAULT ) Sleep(4000) MouseClick("left", 613,272) ;click in program Sleep(500) Example() Func Example() MouseClick("left", 632,456) ;click in program Sleep(500) MouseClick("left", 527,456) ;click in program Sleep(15000) Run( "C:\Programs\browser1.exe", "", @SW_SHOWMAXIMIZED ) Sleep(Random(4000,6000)) EndFunc ;==>Example MouseClick("left", 162,14) ;switch tab Sleep(Random(5000,8000)) MouseClick("left", 354,14) ;switch tab Sleep(Random(5000,8000)) $aCoord = PixelSearch(873, 485, 900, 600, 0xDD0000, 10) ;search for color If Not @error Then MouseClick("left", 1338,6) ;close browser1 Sleep(1000) Call("Example") Else MouseClick("left", 162,14) ;switch tab Sleep(1000) EndIf MouseClick("left", 162,14) ;click tab again just to be sure its loaded Sleep(4000) $aCoord = PixelSearch(1052, 308, 1120, 431, 0xFF0000, 10) ;search for this color If Not @error Then MouseClick("left", 1338,6) ;close browser1 Sleep(1000) Call("Example") Else Run( "C:\Programs\browser2.exe", "", @SW_SHOWMAXIMIZED ) Sleep(2000) EndIf MouseClick("left", 134,45) ;click on address bar Sleep(1000) Send("aspecificwebpage.com") ;input website Send("{enter}") ;hit enter Sleep(15000) MouseClick("left", 1338,6) ;close browser2 Sleep(500) MouseClick("left", 1338,6) ;close browser1 Sleep(500) MouseClick("left", 625,454) ;click in program Sleep(500) MouseClick("left", 634,271) ;click in program Sleep(500) MouseClick("left", 917,245) ;close program Sleep(500) SO it makes the first scan and is successful, if the color is found it closes as I want, but then when nit starts the code again it does not scan anything the second time. and on the other side, if the color is not found naturally everything works as it is written. I want to guess by all the weird colors in the code sniplet I have a massive amount of errors. It is like a rainbow of text up there. different from what i see in AutoIT Any help would be appreciated.
  2. I had this problem with PixelGetColor not giving me the same HEX Color as the AU3Info Tool and searched every were with no luck then had a OH DA moment LoL. The problem is that the "PixelGetColor ($mouseX[0], $mouseY[1])" is looking rite at the very tip of the mouse pointer not under it. So you have to set a -3 after the [0] and [1]. "PixelGetColor ($mouseX[0] -3, $mouseY[1] -3)" to make it search next to the pointer not on the pointer. You may have to adjust this a bit for your display but you should not have to go more then -5. -3 seems to work best for me. Example.au3 #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Form1", 141, 127, 276, 231) $Input1 = GUICtrlCreateInput("", 8, 8, 121, 21) $Label1 = GUICtrlCreateLabel("Press or Hold F1 to get Hex color at Mouse X -3, Y-3 Pos,", 8, 40, 124, 73) GUISetState(@SW_SHOW) HotKeySet("{f1}","MousePos") Func MousePos() $aPos = MouseGetPos() $PGC = PixelGetColor($aPos[0] -3, $aPos[1] -3) GUICtrlSetData($Input1, "0x" & Hex($PGC, 6)) EndFunc While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd
  3. how to find the location on an image color ?? Similar PixelSearch, but in a format bmp image search 0x0806EB and returns coordinates sorry I am not good at English
  4. PixelSearch in a GUI window which state's @SW_MINIMIZE. Is it possible?
  5. Hello, I've wrote a fairly straight forward script that will search an area of the screen and then left click on apart of that area should it find a certain color/pixel. I have a small issue where by within the area, multiple pixels of the same color will appear, the script will continue to click on the same pixel over and over again. Is there a way so that it will cycle through all the results and click on each one for a given time period then move onto the next, as apose to clicking on the same spot forever. I have used timers before and that shouldn't be an issue, its more the having it stop clicking, or ignoring the current pixel its clicking and then moving onto the next one (same pixel color within same area). Hopefully this makes sense. [autoit] HotKeySet("{ESC}", "END_EXIT") HotKeySet("+1", "start") While 1     Sleep(100)  WEnd func start()    while 1 $location = PixelSearch( 631, 175, 1181, 597, 0xFF0000) If IsArray ($location) = 1 Then     MouseClick ('left', $location[0], $location[1], 1, 0)  EndIf  WEnd EndFunc  func END_EXIT()  Exit  EndFunc [/autoit]
  6. Greetings, Func pixelHunter () Local $PixelHunt[2] Do $PixelHunt = PixelSearch (1, 1, 1016, 874, "0xCCE4CC", 0, 1, $sWorkOrderWin) Until $PixelHunt[0] > 0 EndFunc So when I call up this function in my app it fires back "Subscript used on non-accessible variable" Now, if I am understanding this message properly it is trying to tell me that the variable can't be seen by the function asking for it. I replaced "Do...Until" with simply a "ConsoleWrite" the $PixelHunt value and it doesn't throw that error. Any advice would be appreciated! -Reiz
  7. Sir/Ma'am, I am new to autoit so please bear with me, i need help with this please see attached file, many thanks to all. $color1 = 0xED1C24 ;red $color2 = 0xFFFFFF ;white $color3 = 0x22B14C ;green $color4 = 0x00A2E8 ;blue ;lets say (999,366,1331,566) is the yellow outer square $Scan_Area = PixelSearch(999,366,1331,566,$color1) ;how do i delete the BOX2 & BOX1 but not delete BOX3? while(1) if IsArray($Scan_Area) = ???? then Mousemove($Scan_Area[0],$Scan_Area[1],10) Mouseclick($Scan_Area[0],$Scan_Area[1],1,10) Send("{delete}") Sleep(500) Endif Wend
  8. I have a need to make the mouse push down the the left button and trace a shape that goes in all directions . If it can follow the line in a full circle I'd be set. I'm not concerned with the left mouse down, I have that figured out for later. My problem is having the cursor follow a circle in paint. It'll follow some but I think it's going toward 0,0 I'm guessing but falls off once it gets to a certain point. I've searched, I've tried several methods. This code below has been the simplest that works close but won't follow a full, or half circle. It just falls off. More detail that you need but if you've ever seen contour lines on a map, that's what I'm ultimately wanting to follow. I'll be doing it on my own images that I create by scanning the water with sonar and making lake maps. I want to put my image on google earth and turn the contour lines into paths so they have latitude longitude data. Tracing them manually is very time consuming and accuracy suffers. Thank you for any time you spend on this. It would be very helpful. HotKeySet("{ESC}", "Terminate") Const $color = 0x000000 Local $start = MouseGetPos() While 1 $pos = MouseGetPos() If $pos = $start Then ContinueLoop $pix = PixelSearch($pos[0] - 5, $pos[1] - 5, $pos[0] + 5, $pos[1] + 5, $color, 5) If @error = 1 Then ContinueLoop $start = $pos MouseMove($pix[0], $pix[1]) Wend Func Terminate() Exit EndFunc
  9. hello i'm here again i know im quite annoying because i ask nonsense questions >.< i just wanted to improve my automated autoclicker yahoomail I wanted to check if it is match pink and white color using AND operator && but i cant make it to work im really newbie in programming ,i wanted to learn more, i hope you help me again Func CheckIfMatch() $pink = PixelSearch(0, 0, @DesktopHeight, @DesktopWidth, 0x2f0326) && If PixelGetColor ( 1002 , 236 ) = 0xFFFFFF && If isArray($pink) then Send("{F5}") MouseClick("primary", $pink[0] , $pink[1], 0, 0) Else MouseClick("primary", $pink[0] , $pink[1], 0, 0) EndIf EndFunc
  10. Here's the goal: Create a handle to a bitmap object using _WinApi_PrintWindow (this is done and working properly, I can take a screenshot of the window even when it's hidden or offscreen, does not work minimized)Be able to search for a pixel color in memory on the handle. I can get it to work if I create a Bitmap from an HBITMAP (_GDIPlus_BitmapCreateFromHBITMAP) and then go through each pixel and check it using _GDIPlus_BitmapGetPixel but it's too slow. I've tried doing the _WinApi_GetPIxel using an $hDC but it's much slower than GDI+ (GD+ takes about 20seconds to search for almost 500,000 pixels, GetPixel takes almost 60seconds)I found the FastFind library but, honestly, it's sloppy and I'm wanting to search a defined area, not set the starting position and then search the rest of the window. I also found a few examples on the forums but I could not get them to work. Here's the CaptureWindow function. I'm only wanting to capture the client area (Not the border around the client, hence the -16 for the width and the -38 for the height, gets rid of the title bar and the resize bars on the sides. Also I'm wanting to keep the coordinates relative to the window, so if you only want to capture the screen from 480, 200 to 680, 400, then the rest of the area is black on purpose) #include-once Func CaptureWindow(Const $iLeft = 0, Const $iTop = 0, Const $iWidth = -1, Const $iHeight = -1, Const $hWindow = WinGetHandle("[Active]")) Local $rect_window = WinGetPos($hWindow) Local $hDC = _WinAPI_GetWindowDC($hWindow) Local $hDestDC = _WinAPI_CreateCompatibleDC($hDC) Local $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $rect_window[2] - 16, $rect_window[3] - 38) Local $hDestSv = _WinAPI_SelectObject($hDestDC, $hBitmap) Local $hSrcDC = _WinAPI_CreateCompatibleDC($hDC) Local $hBmp = _WinAPI_CreateCompatibleBitmap($hDC, $rect_window[2] - 16, $rect_window[3] - 38) Local $hSrcSv = _WinAPI_SelectObject($hSrcDC, $hBmp) _WinAPI_PrintWindow($hWindow, $hSrcDC, True) If ($iWidth > 0 and $iHeight > 0) Then _WinAPI_BitBlt($hDestDC, $iLeft, $iTop, $iWidth, $iHeight, $hSrcDC, $iLeft, $iTop, $MERGECOPY) Else _WinAPI_BitBlt($hDestDC, $iLeft, $iTop, $rect_window[2] - 16 - $iLeft, $rect_window[3] - 38 - $iTop, $hSrcDC, $iLeft, $iTop, $MERGECOPY) EndIf _WinAPI_SelectObject($hDestDC, $hDestSv) _WinAPI_SelectObject($hSrcDC, $hSrcSv) _WinAPI_ReleaseDC($hWindow, $hDC) _WinAPI_DeleteDC($hDestDC) _WinAPI_DeleteDC($hSrcDC) _WinAPI_DeleteObject($hBmp) Return $hBitmap EndFunc ;==>CaptureWindowAnd the first attempt for PixelSearch, using GDI+ (Fastest) Func PixelSearchInhBitmap(Const ByRef $hHBmp, Const ByRef $color, Const $tolerance = 10, Const $iLeft = 0, Const $iTop = 0, $iWidth = -1, $iHeight = -1, Const $iStep = 1) Local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBmp) Local $rbg_color = _ColorGetRGB("0x" & Hex($color, 6)) Local $found_color = False Local $abscoord_color[2] = [0, 0] Local $red_low = 0 Local $green_low = 0 Local $blue_low = 0 Local $red_high = 0 Local $green_high = 0 Local $blue_high = 0 $red_low = ($tolerance > $rbg_color[0] ? 0 : $rbg_color[0] - $tolerance) $green_low = ($tolerance > $rbg_color[1] ? 0 : $rbg_color[1] - $tolerance) $blue_low = ($tolerance > $rbg_color[2] ? 0 : $rbg_color[2] - $tolerance) $red_high = ($tolerance > 255 - $rbg_color[0] ? 255 : $rbg_color[0] + $tolerance) $green_high = ($tolerance > 255 - $rbg_color[1] ? 255 : $rbg_color[1] + $tolerance) $blue_high = ($tolerance > 255 - $rbg_color[2] ? 255 : $rbg_color[2] + $tolerance) If ($iWidth = -1) Then $iWidth = _GDIPlus_ImageGetWidth($hBitmap) If ($iHeight = -1) Then $iHeight = _GDIPlus_ImageGetHeight($hBitmap) Local $start_time = TimerInit() For $iY = $iTop To $iHeight Step $iStep For $iX = $iLeft To $iWidth Step $iStep Local $get_pixel = _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY) If (@Error) Then ContinueLoop Local $pixel_color = _ColorGetRGB("0x" & Hex($get_pixel, 6)) If (@Error) Then ContinueLoop If (($pixel_color[0] >= $red_low and $pixel_color[0] <= $red_high) and ($pixel_color[1] >= $green_low and $pixel_color[1] <= $green_high) and ($pixel_color[2] >= $blue_low and $pixel_color[2] <= $blue_high)) Then $found_color = True $abscoord_color[0] = $iX $abscoord_color[1] = $iY ExitLoop 2 EndIf Next Next MsgBox("", "", TimerDiff($start_time) / 1000) _GDIPlus_BitmapDispose($hBitmap) If ($found_color) Then Return $abscoord_color Else Return SetError(-1, 0, 0) EndIf EndFuncSecond attempt using _WInApi_GetPixel (Note. I replaced the Autoit function with my own where I replaced the string "gdi32.dll" with a handle to the opened DLL. In the hopes it would improve time. The time difference was not noticable) Global $HWND_DLL_GDI32 = DLLopen("gdi32.dll") Func PixelSearchInhDC(Const ByRef $color, Const $tolerance = 10, Const $iLeft = 0, Const $iTop = 0, $iWidth = -1, $iHeight = -1, Const $iStep = 1, Const $hWnd_window = WinGetHandle("[Active]")) Local $hDC = _WinAPI_GetWindowDC($hWnd_window) Local $rbg_color = _ColorGetRGB("0x" & Hex($color, 6)) Local $found_color = False Local $abscoord_color[2] = [0, 0] Local $start_time, $end_time Local $red_low = 0 Local $green_low = 0 Local $blue_low = 0 Local $red_high = 0 Local $green_high = 0 Local $blue_high = 0 If (Not $hDC) Then Return SetError(1, 0, 0) EndIf If ($iWidth = -1 or $iHeight = -1) Then Local $rect_window = WinGetPos($hWnd_window) If ($iWidth = -1) Then $iWidth = $rect_window[2] - $iLeft If ($iHeight = -1) Then $iHeight = $rect_window[3] - $iTop EndIf $red_low = ($tolerance > $rbg_color[0] ? 0 : $rbg_color[0] - $tolerance) $green_low = ($tolerance > $rbg_color[1] ? 0 : $rbg_color[1] - $tolerance) $blue_low = ($tolerance > $rbg_color[2] ? 0 : $rbg_color[2] - $tolerance) $red_high = ($tolerance > 255 - $rbg_color[0] ? 255 : $rbg_color[0] + $tolerance) $green_high = ($tolerance > 255 - $rbg_color[1] ? 255 : $rbg_color[1] + $tolerance) $blue_high = ($tolerance > 255 - $rbg_color[2] ? 255 : $rbg_color[2] + $tolerance) $start_time = TimerInit() For $iY = $iTop To $iHeight Step $iStep For $iX = $iLeft To $iWidth Step $iStep Local $get_pixel = __WinAPI_GetPixel($hDC, $iX, $iY) If (@Error) Then ContinueLoop Local $pixel_color = _ColorGetRGB("0x" & Hex($get_pixel, 6)) If (@Error) Then ContinueLoop If (($pixel_color[0] >= $red_low and $pixel_color[0] <= $red_high) and ($pixel_color[1] >= $green_low and $pixel_color[1] <= $green_high) and ($pixel_color[2] >= $blue_low and $pixel_color[2] <= $blue_high)) Then $found_color = True $abscoord_color[0] = $iX $abscoord_color[1] = $iY ExitLoop 2 EndIf Next Next MsgBox("", "", TimerDiff($start_time) / 1000 & "s") If ($found_color) Then Return $abscoord_color Else Return SetError(1, 0, 0) EndIf EndFunc Func __WinAPI_GetPixel($hDC, $iX, $iY) Local $aRet = DllCall($HWND_DLL_GDI32, 'dword', 'GetPixel', 'handle', $hDC, 'int', $iX, 'int', $iY) If @error Or ($aRet[0] = 4294967295) Then Return SetError(@error, @extended, -1) ; If $aRet[0] = 4294967295 Then Return SetError(1000, 0, -1) Return __RGB($aRet[0]) EndFunc ;==>__WinAPI_GetPixel
  11. i have similar problem pixelsearch. but i found an ahk script solution from google. can anyone help me convert ahk to autoit script? im really new to this heres ahk script MainLoop() { Loop { PixelSearch, X, Y, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, 0x00FF00, 0, fast if(ErrorLevel=0) { MouseClick, left, %X%, %Y% sleep, 300 RefinedLoop(x, y) } RefinedLoop(pX, pY) { Loop { pX := X + 50 pY := y + 50 dX := X - 50 dY := Y - 50 PixelSearch, X, Y, %pX%, %pY%, %dX%, %dY%, 0x00FF00, 0, fast if(ErrorLevel=0) { MouseClick, left, %X%, %Y% sleep, 300 } Else if (ErrorLevel <> 0) i++ If (i > 10) MainLoop() } } i tried to convert to autoit but gives me bunch of error Func MainLoop() While 1 $green = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x00ff00) If isArray($green) then MouseClick("primary", $green[0], $green[1] , 1, 0) RefinedLoop(pX, pY) } RefinedLoop(pX, pY) { while 1 pX = X + 50 pY = y + 50 dX = X - 50 dY = Y - 50 $green = PixelSearch($pX, $pY, $dX, $dY 0x00ff00) If isArray($green) then MouseClick("primary", $green[0], $green[1] , 1, 0) Else if @ErrorLevel <> 0 i++ If (i > 10)
  12. sometimes my script just hovering mouseMove to the target continuously.. and not left clicking it ..whats the problem? Func Start() While 1 $pxs2 = PixelSearch(70, 102, 1181, 654, 0x6b2900) If isArray($pxs2) then MouseMove($pxs2[0]+40,$pxs2[1]+40, 0) sleep(100) MouseClick("Left") Else $pxs3 = PixelSearch(70, 102, 1181, 654, 0x6b29a4) If isArray($pxs3) then MouseMove($pxs3[0]+40,$pxs3[1]+40, 0) sleep(100) MouseClick("Left") Else $pink = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x8a0859) If isArray($pink) then MouseMove($pink[0],$pink[1], 0) sleep(100) MouseClick("Left") Else $pink2 = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x8c085a) If isArray($pink2) then MouseMove($pink2[0],$pink2[1], 0) sleep(100) MouseClick("Left") Else $pink3 = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x880852) If isArray($pink3) then MouseMove($pink3[0],$pink3[1], 0) sleep(100) MouseClick("Left") Else $green = PixelSearch(70, 102, 1181, 654, 0x00FF00) If isArray($green) then Send("{F3}") MouseMove($green[0]+25,$green[1]+25, 0) sleep(100) MouseClick("Left") Else Send("{F9}") Sleep(700) EndIf EndIf EndIf EndIf EndIf EndIf WEnd EndFunc
  13. my script is working fine but it mostly clicks only in the sides and corner of green square (which is the first pixels it detects i guess) any idea how can I click the middle area inside of pixelsearch? heres what i done but it wont work $greenbox = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x00FF00) If isArray($greenbox) then newX := greenbox[0] + 25 newY := greenbox[1] + 25 MouseMove($newX[0],$newY[1], 0) MouseClick("Left")
  14. I want to do several Pixelsearches on my Screen to find out if i can find the Chrome Browser ^^ Instead of one big search on the screen i run $pixesearch1,$pixesearch2,$pixesearch3 etc. on a sliced up Screen. I have done something similar before.. But i wanted to ask if i should use Switch or Select? Do they only run ONE of their cases? or run as many cases that are True?
  15. How can I search for a certain color in a background or masked window by other windows( no minimized ), and get the color's relative window's coordinates ?? Is it possible ? I appreciate any help....
  16. Let’s say I want to do pixelsearch within coordinates 0, 0, 100, 100, but I would like to ignore pixels in area 10,10,20,20. Is it possible to achieve?
  17. While i am waiting for Better Solutions for Finding Multiple @error Cases and React according to them, i am hoping that some1 could explain me what my problem in this (time consuming) function is.. The Idea is that i check for @Errors from the 3 PixelSearch i am doing, and give Message according to it. I am changing Colors In Paint for Every Loop To Test If the Color Searches Are Correct. All Cases are Working Fine, and the Right MsgBoxes are Triggered, Except the Case where all 3 Colors are Missing: HotKeySet("{ESC}", "End") Global $pixelSearchError1 = @error Global $pixelSearchError2 = @error Global $pixelSearchError3 = @error While 1 Sleep(10) $pixelsearch1 = PixelSearch(100,300,200,512,0x0000ff,10) ;Blue $pixelSearchError1 = @error $pixelsearch2 = PixelSearch(250,310,400,512,0xfa0000,10) ;Red $pixelSearchError2 = @error $pixelsearch3 = PixelSearch(500,300,600,512,0x00ff00,10) ;Green $pixelSearchError3 = @error Call("_errorcheck") WEnd Func _errorcheck() Sleep(100) Select ;Check for Blue Color, Then Proceed. Case Not $pixelSearchError1 ;Found Blue MsgBox(0,"Message","Blue Pixel Found!") Select ;Blue Found. Now check for Red Case Not $pixelSearchError2 ;Found Blue and Red MsgBox(0,"Message","Blue and Red Pixel Found!") Select ;Blue and Red found. Now check for Green Case Not $pixelSearchError3 ;Found Blue, Red and Green MsgBox(0,"Message","Blue,Red and Green Pixel Found!") Case $pixelSearchError3 ;Blue, Red But not Green MsgBox(0,"Message","Found Blue, Red But Not Green") EndSelect Case $pixelSearchError2 ;Blue Found, But Not Red MsgBox(0,"Message","Blue Found, But Not Red") Select ;Blue and Red found. Now check for Green Case Not $pixelSearchError3 ;Found Blue, Green But not Red MsgBox(0,"Message","Found Blue, Green But Not Red") Case $pixelSearchError3 ;Blue, But not Red or Green MsgBox(0,"Message","Could only Find Blue") EndSelect EndSelect Case $pixelSearchError1 ;Blue Not Found MsgBox(0,"Message","Blue Pixel Not Found") Select ;Blue Not Found. Now check for Red Case Not $pixelSearchError2 ;Found Red, But not Blue MsgBox(0,"Message","Found Red, But not Blue") Select ;Found Red, But not Blue Now check for Green Case Not $pixelSearchError3 ;Red and Green, but not Blue MsgBox(0,"Message","Red,Green But not Blue") Case $pixelSearchError3 ;Red, But not Blue or Green MsgBox(0,"Message","Could only Find Red") EndSelect Case $pixelSearchError2 ;Could not find Blue or Red MsgBox(0,"Message","Could not Find Blue and Red") Select ;Blue and Red Not found. Now check for Green Case Not $pixelsearch3 ;Only found Green MsgBox(0,"Message","Only found Green") Case $pixelSearchError3 ;Did not Find Blue,Red or Green MsgBox(0,"Message","No Color was found") EndSelect EndSelect EndSelect Sleep(10) EndFunc I Made a Picture that should make it far easier to see where one Select Case Starts and Ends Check the Link Below. http://imageshack.us/f/9/selectcasegreenerror.gif/ I can't see why the Last Case is not working.. When Blue,Red AND Green are Missing i still get the "Only found Green" Please Help Also, Building the Cases Like this takes up allot of Time and Space, so if you have a Easier way please Tell Like: If Not @error 1 And @error 2 And @error 3 Then But i don't think that Works. I probably want to run 5 PixelSearches and that would mean 5 Select an 32 Cases !!!1!!11 So it would be Great if there was another way of doing this If not, Please do still tell what the problem of my Function is
  18. So i was in need of this custom udf Fastfind Melba23 showed me this great article on AutoIt wiki..http://www.autoitscript.com/wiki/Adding_UDFs_to_AutoIt_and_SciTE and i think i did like it said.. mostly anyway.. I downloaded and unzipped FastFind and placed all files in a new Folder i created in the AutoIt3 Folder The files i placed in the new Folder: <-- Named it FastFind Benchmark.au3 FastFind.au3 FastFind.dll FastFind_Demo.au3 FastFind.dll I think the Benchmark and FastFind_Demo are just examples.. But i don't think they will Hurt by being in there ? They don't have any Dll to them.. and Even though i am not shure about it.. i think you need the dll to include and call the Custom Files from that folder. Correct me if i am wrong So after placing the files in the new Folder, i started SciTE --> SciTE Config --> User Include Dir: C:Program Files (x86)AutoIt3FastFind Save+Apply So can i now #include <fastfind.au3> ? and you the build in functions? I have not tried this yet because i dont know how to use the custom UDF "syntax?"
  19. Hey i am trying to do a PixelSearch on the Screen, in a 3D environment. The Idea is that the PixelSearch "Rotates Arround " In the 3D evironment, until it finds the Color. Then Moves Toward The Color. To accomplish this, i made the PixelSearch Thin, But Tall: PixelSearch(620,0,660,512, 0xFE4335,10) (My resolution is 1280x1024 so the Center of X is 640) Here is My Script: WinActivate("3D Application") Sleep(5000) $KeyToPress = "w" $D_Down = "d" Global $color = PixelSearch(540,0,740,512, 0xFE4335,50) Func Spin() Send ("{"&$D_Down&" DOWN}") Sleep (200) Send ("{"&$D_Down&" UP}") EndFunc Func WalkDistance() Send ("{"&$KeyToPress&" DOWN}") Sleep ($color[1]*2000) Send ("{"&$KeyToPress&" UP}") EndFunc Select Case Not @error Sleep(10) MouseMove ($color[0],$color[1],10) Call("WalkDistance") Case @error Sleep(10) Call("Spin") Case Else MsgBox(0,"Error","Error") EndSelect MsgBox(0,"Message","Done") The First Case Works, But is not Shutting Down. The Second Case Steps in when there are no Pixels of that Color, and Rotates I want to Repeat the Select until the Application Window is No Longer The Active window. How can i Repeat The Select Case? Can i Run a Select Case inside a Select Case by using If ... Then ? Is Select Case a Good Way to Make a Programm work with Diffrent Scenarios (Cases) or is there a better way? This Language is Fast and fun to Learn !
  20. 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? Advanced: 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 MORE ADVANCED ! 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 !
  21. Error i get when running my code: "Line 854 (File "C:\Users\Jon\Documents\PixelClick.exe"): Error: Subscript use with non-Array Variable." Func BuyTwo() MouseClick("left", 435, 18, 1, 0) Sleep(100) $Buy = PixelSearch( 1410, 450, 1540, 495, 0xF0F0F0) MouseClick( "Left", $Buy[0]+5, $Buy[1]+5, 1, 0) Sleep(100) MouseClick("left", 695, 18, 1, 0) Sleep(100) $Buy = PixelSearch( 1410, 450, 1540, 495, 0xF0F0F0) MouseClick( "Left", $Buy[0]+5, $Buy[1]+5, 1, 0) EndFunc there is other code but this is where i get the error. any ideas what im doing wrong??