84cr250 Posted September 17, 2010 Share Posted September 17, 2010 so my problem is my mouse isn't a standerd mouse its 2x bigger. So when i use the 'AutoIt Window Info' is just comes back with the color of my pointer. so what i need to know is there a way to cheak the color of something like 20 pixels up and 20 pixels left of the pointer i have this script but i cant use it because i cant get the colors i need. i tryed for 2 days (off and on) then i found out im just getting the colors of my mouse. (lol thats why i could only find 7 different colors with it lol) HotKeySet("{esc}","close") Opt('PixelCoordMode', 2) Opt('MouseCoordMode', 2) Global $Mpos = '', $Color = XXXXXXXXXX <----- i need the color to put here While 1 $Mpos = MouseGetPos() If IsArray($Mpos) Then $PixColor = PixelGetColor($Mpos[0], $Mpos[1]) If ($PixColor == $Color) Then MsgBox(0, 'Color Found', 'X: ' & $Mpos[0] & ' Y: ' & $Mpos[1]) EndIf ToolTip('Xcoord = ' & $Mpos[0] & @CR & 'Ycoord = ' & $Mpos[1] & @CR & 'Color = ' & '0x' & Hex($PixColor, 6)) EndIf Sleep(10) WEnd func close() Exit EndFunc thanks for any help, im new to this so there might just be a really easy fix to this that im not aware of. Link to comment Share on other sites More sharing options...
seandisanti Posted September 17, 2010 Share Posted September 17, 2010 instead of referencing $mpos[0] and $mpos[1], you can do $mpos[0]-20 & $mpos[1]-20 Link to comment Share on other sites More sharing options...
84cr250 Posted September 17, 2010 Author Share Posted September 17, 2010 instead of referencing $mpos[0] and $mpos[1], you can do $mpos[0]-20 & $mpos[1]-20 ......that simple is it? Well thanks for the quick answer Link to comment Share on other sites More sharing options...
seandisanti Posted September 17, 2010 Share Posted September 17, 2010 ......that simple is it? Well thanks for the quick answerNo problem, glad to help Link to comment Share on other sites More sharing options...
84cr250 Posted September 17, 2010 Author Share Posted September 17, 2010 (edited) so now i have this but it only tells me the color when i run the program and every time i press the "OK" botton is there a way for it to up date itself every 500ms instead of when i just run it because i have to find the colors i need befor i can use my other script to search for them Opt('PixelCoordMode', 2) Opt('MouseCoordMode', 2) Global $Mpos While 1 $Mpos = MouseGetPos() $PixColor = PixelGetColor($Mpos[0]-20, $Mpos[1]-20) MsgBox(0, 'Color Found', 'X: ' & $Mpos[0]-20 & ' Y: ' & $Mpos[1]-20 & 'Color = ' & '0x' & Hex($PixColor, 6)) WEnd Edited September 17, 2010 by 84cr250 Link to comment Share on other sites More sharing options...
nf67 Posted September 18, 2010 Share Posted September 18, 2010 Hi 84cr, please use the autoit tags to syntax highlight your code, like this: Opt('PixelCoordMode', 2) Opt('MouseCoordMode', 2) HotKeySet("q","Result") AdlibRegister("Update",500) ; <==== Global $Color While 1 ;You could put a sleep in here if you'd like. WEnd Func Result() MsgBox(0,"Color =",$Color) EndFunc Func Update() ; <==== $Color = PixelGetColor(MouseGetPos(0)-20, MouseGetPos(1)-20) EndFunc Link to comment Share on other sites More sharing options...
NinjaGeek Posted September 18, 2010 Share Posted September 18, 2010 (edited) so now i have this but it only tells me the color when i run the program and every time i press the "OK" botton is there a way for it to up date itself every 500ms instead of when i just run it because i have to find the colors i need befor i can use my other script to search for them Opt('PixelCoordMode', 2) Opt('MouseCoordMode', 2) Global $Mpos While 1 $Mpos = MouseGetPos() $PixColor = PixelGetColor($Mpos[0]-20, $Mpos[1]-20) MsgBox(0, 'Color Found', 'X: ' & $Mpos[0]-20 & ' Y: ' & $Mpos[1]-20 & 'Color = ' & '0x' & Hex($PixColor, 6)) WEnd You could use a GUI instead of a MsgBox - MsgBox is blocking, meaning that no other code can run while it is open, so it's a little difficult to update (unless you time it out and recreate it every second, which I think would just be annoying) The following code will update automatically no matter where you move your mouse: #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> HotKeySet("{ESC}","Close") HotKeySet("{F9}","Copy") Opt('PixelCoordMode', 1) Opt('MouseCoordMode', 1) Global $Mpos, $PixColor $mousebox = GUICreate("",150,150,0,0,BitOR($WS_CAPTION, $WS_POPUP),$WS_EX_TOPMOST) GUICtrlCreateLabel("X pos:",10,10,80,25) GUICtrlCreateLabel("Y pos:",10,40,80,25) GUICtrlCreateLabel("Color:",10,70,80,25) $mousex = GUICtrlCreateLabel("",60,10,80,25) $mousey = GUICtrlCreateLabel("",60,40,80,25) $mousecolor = GUICtrlCreateLabel("",60,70,80,25) $mousecolorex = GUICtrlCreateGraphic(10,100,130,30) GUISetState() While GUIGetMsg()<>$GUI_EVENT_CLOSE $Mpos = MouseGetPos() $PixColor = PixelGetColor($Mpos[0], $Mpos[1]) GUICtrlSetData($mousex,$Mpos[0]) GUICtrlSetData($mousey,$Mpos[1]) GUICtrlSetData($mousecolor,Hex($PixColor, 6)) GUICtrlSetBkColor($mousecolorex,"0x"&Hex($PixColor, 6)) sleep(10) WEnd Func Close() Exit EndFunc Func Copy() ClipPut($Mpos[0]&", "&$Mpos[1]&", 0x"&Hex($PixColor, 6)) EndFunc I changed the coordinate modes to 1 so they give you the position on the screen, not the client area of the window, as this usually makes more sense to get the absolute screen position. It technically updates about 100 times a second, I did this so it doesn't kill the CPU. Also, I put in the offset, but with this code it's not really needed, it will give the color even at the tip of the mouse. Edit: changed the code to set the window always on top, to map Esc to a hotkey to exit the script, and to map F9 to a function to copy the coordinates and color code to the clipboard Edited September 18, 2010 by NinjaGeek Link to comment Share on other sites More sharing options...
seandisanti Posted September 18, 2010 Share Posted September 18, 2010 You could use a GUI instead of a MsgBoxOr a Tooltip(), that's what i usually use for checking coords etc Link to comment Share on other sites More sharing options...
ALTIN Posted September 18, 2010 Share Posted September 18, 2010 NinjaGeek killed the nail in head... Link to comment Share on other sites More sharing options...
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