Ruben Posted September 1, 2012 Posted September 1, 2012 (edited) Hello autoit community, i want to make a script but i don't know how to do it: Im making a script that uses PixelGetColor to activate a function when some colour shows up in a certain pixel. That's easy, but the problem now is that i don't want it to work with a single color like 0xff0000 alone but with a range shades of that same color too (0xfe0000, 0xff0001, etc), kinda like pixel search's shade variation Is there any way to do this? thanks Edited September 1, 2012 by Ruben
water Posted September 1, 2012 Posted September 1, 2012 Welcome to AutoIt and the forum! Can you please tell us which application you try to automate? Maybe there is an easier way to do what you want. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
cageman Posted September 1, 2012 Posted September 1, 2012 (edited) Probably fill an array with the colors it should check. Func pixelmatchescolorsI($x,$y,$carray) local $color=PixelGetColor(x,y) for $i=1 to $carray[0] if $color = $carray[i] then return true endif next return false EndFunc my autoit syntax is probably totally off, but this code should pretty much do it. carray contains an array with colors to check. In a range it could be something like Func pixelmatchescolor($x,$y,$colortomatch,$variation) calculate the range and check if the color lies within that range, that would be faster than an array loop. Another simple solution to do a pixelsearch for one pixel with the shade variation you need and check if it returns an array. Edited September 1, 2012 by cageman
BrewManNH Posted September 1, 2012 Posted September 1, 2012 PixelSearch will allow you to input a shade variation value. Use that instead of PixelGetColor. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
Ruben Posted September 2, 2012 Author Posted September 2, 2012 (edited) I came with this code, it works like PixelGetColor and has PixelSearch's shades just like i asked. It's a PixelGetColor with shades option and it finally works I forgot about @error when i asked for help, now im using a error on purpose lol Thanks anyway guys HotKeySet('{END}','_exit') While 1 $pos = MouseGetPos() $color = 0xff0000 $shades = 128 $coord = PixelSearch($pos[0], $pos[1],$pos[0], $pos[1], $color, $shades, 1) If Not @error Then If $coord[0]=$pos[0] and $coord[1]=$pos[1] Then TrayTip ( "", "that's it", 1 ,5 ) Sleep(100) EndIf EndIf If @error Then TrayTip ( "", "nothing there", 1 ,5 ) Sleep(100) EndIf Sleep(100) WEnd Func _exit() Exit EndFunc Edited September 2, 2012 by Ruben
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now