KaFu Posted October 1, 2008 Posted October 1, 2008 This script was also the basis for my COP script. Here's a quick and dirty update of the original code. expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.2.12.1 Author: Nahuel (3.2.10.0) KaFu (update to 3.2.12.1) 2008-Oct-01 Url: http://www.autoitscript.com/forum/index.php?showtopic=53471 Script Function: Pixel Color V2., Now with magnifier and some other stuff (updated to 3.2.12.1) #ce ---------------------------------------------------------------------------- #include<GUIconstants.au3> #include<Misc.au3> #include<WindowsConstants.au3> #include<EditConstants.au3> #include<StaticConstants.au3> #NoTrayIcon Opt("WinTitleMatchMode", 4) Opt("WinWaitDelay", 0) Opt("GUIonEventMode",1) ;~ Global $SRCCOPY = 0x00CC0020 Global $leave = 0 Global $Paused=0 $MouseModifier = 1 $PressedTime = 1 HotKeySet("{PAUSE}", "TogglePause") HotKeySet("{INS}", "_copyHEX") Tooltip("AU3MAG", 0, 0,"","",4) $MyhWnd = WinGetHandle("classname=tooltips_class32") GUICreate("Pixel Color", 180, 410,0, 0, -1, $WS_EX_TOPMOST) GUISetOnEvent($GUI_EVENT_CLOSE,"_exit") GUICtrlCreateGroup(" Mouse coords ", 10, 10, 160, 50) GUICtrlCreateLabel("X:", 25, 33, 15, 15) $MousePosX=GUICtrlCreateInput("", 40, 30, 40, 20, $ES_READONLY) GUICtrlCreateLabel("Y:", 90, 33, 15, 15) $MousePosY=GUICtrlCreateInput("", 105, 30, 40, 20, $ES_READONLY) GUICtrlCreateGroup(" Color codes ", 10, 70, 160, 110) GUICtrlCreateLabel("Decimal:", 25, 93, 50, 15) $PixelColor=GUICtrlCreateInput("", 80, 90, 70, 20, $ES_READONLY) GUICtrlCreateLabel("Hex:", 25, 123, 50, 15) $hexColor=GUICtrlCreateInput("", 80, 120, 70, 20,$ES_READONLY) GUICtrlCreateLabel("Color:", 25, 153, 50, 15) $MostrarColor=GUICtrlCreateLabel("", 80, 150, 70, 20,$ES_READONLY) GUICtrlCreateGroup(" Special options ", 10, 190, 160, 145) $RB_Full = GUICtrlCreateRadio("Full Screen", 25, 210, 100, 20) GUICtrlSetState(-1, $GUI_CHECKED) $RB_Window = GUICtrlCreateRadio("Active Window", 25, 230, 100, 20) $Mag= GUICtrlCreateCheckbox("Magnify", 25, 250, 100, 20) $Solid= GUICtrlCreateRadio("Solid crosshair", 35, 270, 100, 20) $Inver= GUICtrlCreateRadio("Inverted crosshair", 35, 290, 120, 20) $KeyBMouse= GUICtrlCreateCheckbox("Move cursor with keyb.", 25, 310, 140, 20) $Ayuda=GUICtrlCreateButton("Help",10,345,77) GUICtrlSetOnEvent(-1,"Ayuda") $Saltar=GUICtrlCreateButton("Jump to",92,345,77) GUICtrlSetOnEvent(-1,"Saltar") GUICtrlCreateLabel("PAUSE: Freeze/Unfreeze", 0, 380 ,180,15,$SS_CENTER) GUICtrlSetColor(-1,0x00808080) GUICtrlCreateLabel("INS: Copy hex code to clipboard", 0, 395 ,180,15,$SS_CENTER) GUICtrlSetColor(-1,0x00808080) GUISetState() data() Func data() While 1 Sleep(50) Opt("WinTitleMatchMode",4) If (_IsPressed(25) + _IsPressed(26) + _IsPressed(27) + _IsPressed(28)) = 0 Then _ResetSpeed() EndIf $msg=GUIGetMsg() Select Case $msg=$GUI_EVENT_CLOSE Exit EndSelect If GUICtrlRead($KeyBMouse)=$GUI_CHECKED Then MouseKeyb() Else MouseKeybNO() EndIf If GUICtrlRead($Mag)=$GUI_CHECKED Then GUICtrlSetState($RB_Window,$GUI_DISABLE) GUICtrlSetState($Solid,$GUI_ENABLE) GUICtrlSetState($Inver,$GUI_ENABLE) GUICtrlSetState($RB_Full,$GUI_CHECKED) WinSetState($MyhWnd,"",@SW_SHOW) MAG() Else GUICtrlSetState($Solid,$GUI_DISABLE+$GUI_UNCHECKED) GUICtrlSetState($Inver,$GUI_DISABLE+$GUI_UNCHECKED) GUICtrlSetState($RB_Window,$GUI_ENABLE) WinSetState($MyhWnd,"",@SW_HIDE) EndIf If GUICtrlRead($RB_Full) = $GUI_CHECKED Then Opt("MouseCoordMode", 1) Opt("PixelCoordMode", 1) $pos=MouseGetPos() $color=PixelGetColor($pos[0],$pos[1]) GUICtrlSetData($MousePosX, $pos[0]) GUICtrlSetData($MousePosY, $pos[1]) GUICtrlSetData($PixelColor,$color) $HEX6=StringRight(Hex($color),6) GUICtrlSetData($hexColor,"0x"&$HEX6) GUICtrlSetBkColor($MostrarColor,"0x"&Hex($color)) Else Opt("MouseCoordMode", 0) Opt("PixelCoordMode", 0) Opt("WinTitleMatchMode",1) $win = WinGetPos("") $pos=MouseGetPos() If $pos[0] >= 0 And $pos[0] <= $win[2] and $pos[1] >= 0 And $pos[1] <= $win[3] Then $color=PixelGetColor($pos[0],$pos[1]) GUICtrlSetData($MousePosX, $pos[0]) GUICtrlSetData($MousePosY, $pos[1]) GUICtrlSetData($PixelColor,$color) $HEX6=StringRight(Hex($color),6) GUICtrlSetData($hexColor,"0x"&$HEX6) GUICtrlSetBkColor($MostrarColor,"0x"&Hex($color)) Else GUICtrlSetData($MousePosX, "----") GUICtrlSetData($MousePosY, "----") GUICtrlSetData($PixelColor,"") GUICtrlSetData($hexColor,"") EndIf EndIf WEnd EndFunc Func TogglePause() $Paused = NOT $Paused While $Paused sleep(10) $msg=GUIGetMsg() Select Case $msg=$GUI_EVENT_CLOSE Exit EndSelect WEnd EndFunc Func MAG() $MyHDC = DLLCall("user32.dll","int","GetDC","hwnd",$MyhWnd) If @error Then Return $DeskHDC = DLLCall("user32.dll","int","GetDC","hwnd",0) If Not @error Then $xy = MouseGetPos() If Not @error Then $l = $xy[0]-10 $t = $xy[1]-10 DllCall("gdi32.dll","int", "StretchBlt", "int", $MyHDC[0], "int", 0, "int", 0, "int", 100, "int", 100, "int", $DeskHDC[0], "int", $l, "int", $t, "int", 20, "int", 20, "long", $SRCCOPY) If $xy[0]<(@DesktopWidth-120) then $XArea= $xy[0] + 20 Else $XArea= $xy[0] - 120 EndIf If $xy[1]<(@DesktopHeight-120) then $YArea= $xy[1] + 20 Else $YArea= $xy[1] - 120 EndIf WinMove($myhwnd, "",$XArea,$YArea , 100, 100) If GUICtrlRead($Solid)=$GUI_CHECKED Then CrossHairsSOLID($MyHDC[0]) EndIf If GUICtrlRead($Inver)=$GUI_CHECKED Then CrossHairsINV($MyHDC[0]) EndIf EndIf DLLCall("user32.dll","int","ReleaseDC","int",$DeskHDC[0],"hwnd",0) EndIf DLLCall("user32.dll","int","ReleaseDC","int",$MyHDC[0],"hwnd",$MyhWnd) EndFunc Func Ayuda() MsgBox(0,"Help","*Use magnifier for more presicion." & @CRLF & "" & @CRLF & "*Use 'move cursor with keyboard' option for more presicion." & @CRLF & " -Keeping arrow key pressed increases speed." & @CRLF & " -Shift+'arrow' moves mouse cursor faster." & @CRLF & "" & @CRLF & "*Use 'Jump to' to move mouse cursor to a specified pixel" & @CRLF & @CR&"*Press PAUSE to freeze and unfreeze." & @CRLF & "" & @CRLF &"*Press INS to copy HEX code to clipboard.") EndFunc Func Saltar() Do $SaltarCord=InputBox("Jump to","Enter pixel coordinates you want to jump to."&@CRLF&"Example: 123,420",MouseGetPos(0)&","&MouseGetPos(1),"",150,150) $CoordsM=StringSplit($SaltarCord,",") Until @error OR ($CoordsM[1]<=@DesktopWidth AND $CoordsM[2]<=@DesktopHeight) if not @error Then BlockInput(1) MouseMove($CoordsM[1],$CoordsM[2]) BlockInput(0) EndIf EndFunc Func MouseKeyb() HotKeySet("+{UP}", "_UpArrow") HotKeySet("{UP}", "_UpArrow") HotKeySet("+{DOWN}", "_DownArrow") HotKeySet("{DOWN}", "_DownArrow") HotKeySet("+{LEFT}", "_LeftArrow") HotKeySet("{LEFT}", "_LeftArrow") HotKeySet("+{RIGHT}", "_RightArrow") HotKeySet("{RIGHT}", "_RightArrow") EndFunc Func MouseKeybNO() HotKeySet("+{UP}") HotKeySet("{UP}") HotKeySet("+{DOWN}") HotKeySet("{DOWN}") HotKeySet("+{LEFT}") HotKeySet("+{LEFT}") HotKeySet("{LEFT}") HotKeySet("+{RIGHT}") HotKeySet("{RIGHT}") EndFunc Func nada() EndFunc Func _copyHEX() ClipPut(Guictrlread($hexColor)) EndFunc;==>_ShowInfo Func _UpArrow() Local $MousePos = MouseGetPos() If _IsPressed(10) Then $i = 10 Else $i = 1 EndIf If $MousePos[1] > 0 Then _BoostMouseSpeed() MouseMove($MousePos[0], $MousePos[1] - ($MouseModifier * $i), 1) EndIf EndFunc;==>_UpArrow Func _DownArrow() If _IsPressed(10) Then $i = 10 Else $i = 1 EndIf Local $MousePos = MouseGetPos() If $MousePos[1] < @DesktopHeight Then _BoostMouseSpeed() MouseMove($MousePos[0], $MousePos[1] + ($MouseModifier * $i),1) EndIf EndFunc;==>_DownArrow Func _LeftArrow() If _IsPressed(10) Then $i = 10 Else $i = 1 EndIf Local $MousePos = MouseGetPos() If $MousePos[0] > 0 Then _BoostMouseSpeed() MouseMove($MousePos[0] - ($MouseModifier * $i), $MousePos[1],1) EndIf EndFunc;==>_LeftArrow Func _RightArrow() If _IsPressed(10) Then $i = 10 Else $i = 1 EndIf Local $MousePos = MouseGetPos() If $MousePos[0] < @DesktopWidth Then _BoostMouseSpeed() MouseMove($MousePos[0] + ($MouseModifier * $i), $MousePos[1],1) EndIf EndFunc;==>_RightArrow Func _BoostMouseSpeed() If IsInt($PressedTime / 10) Then $MouseModifier = $MouseModifier + 1 $PressedTime = $PressedTime + 1 Else $PressedTime = $PressedTime + 1 EndIf EndFunc Func _ResetSpeed() $MouseModifier = 1 $PressedTime = 1 EndFunc;==>_ResetSpeed Func CrossHairsSOLID(ByRef $hdc) Local $hPen, $hPenOld $hPen = DllCall("gdi32.dll", "hwnd", "CreatePen", "int", 0, "int", 5, "int", 0x555555) $hPenOld = DllCall("gdi32.dll", "hwnd", "SelectObject", "int", $hdc, "hwnd", $hPen[0]) DllCall("gdi32.dll", "int", "MoveToEx", "int", $hdc, "int", 52, "int", 0, "ptr", 0) DllCall("gdi32.dll", "int", "LineTo", "int", $hdc, "int", 52, "int", 46) DllCall("gdi32.dll", "int", "MoveToEx", "int", $hdc, "int", 52, "int", 58, "ptr", 0) DllCall("gdi32.dll", "int", "LineTo", "int", $hdc, "int", 52, "int", 100) DllCall("gdi32.dll", "int", "MoveToEx", "int", $hdc, "int", 0, "int", 52, "ptr", 0) DllCall("gdi32.dll", "int", "LineTo", "int", $hdc, "int", 46, "int", 52) DllCall("gdi32.dll", "int", "MoveToEx", "int", $hdc, "int", 58, "int", 52, "ptr", 0) DllCall("gdi32.dll", "int", "LineTo", "int", $hdc, "int", 100, "int", 52) DllCall("gdi32.dll", "hwnd", "SelectObject", "int", $hdc, "hwnd", $hPenOld[0]) DllCall("gdi32.dll", "int", "DeleteObject", "hwnd", $hPen[0]) EndFunc ;==>CrossHairsSOLID Func CrossHairsINV(ByRef $hdc) ;~ Local CONST $NOTSRCCOPY = 0x3300087 DllCall("gdi32.dll", "int", "BitBlt", "int", $hdc, "int", 50, "int", 0, "int", 5, "int", 49, "int", $hdc, "int", 50, "int", 0, "int", $NOTSRCCOPY) DllCall("gdi32.dll", "int", "BitBlt", "int", $hdc, "int", 50, "int", 56, "int", 5, "int", 49, "int", $hdc, "int", 50, "int", 56, "int", $NOTSRCCOPY) DllCall("gdi32.dll", "int", "BitBlt", "int", $hdc, "int", 0, "int", 50, "int", 49, "int", 5, "int", $hdc, "int", 0, "int", 50, "int", $NOTSRCCOPY) DllCall("gdi32.dll", "int", "BitBlt", "int", $hdc, "int", 56, "int", 50, "int", 44, "int", 5, "int", $hdc, "int", 56, "int", 50, "int", $NOTSRCCOPY) EndFunc ;==>CrossHairsINV Func _exit() Exit EndFunc Best Regards OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
Kilhian Posted October 1, 2008 Posted October 1, 2008 (edited) thanks but I already done this: update includes it's not enough magnify with crosshair doesn't work as it supposed to edit: it's vista's bug i launched kafu's cop script and had the same bug Edited October 1, 2008 by Kilhian
Kilhian Posted April 24, 2009 Posted April 24, 2009 (edited) thanks but I already done this:update includesit's not enoughmagnify with crosshair doesn't work as it supposed toedit:it's vista's bugi launched kafu's cop script and had the same bug6 months later, I'm backhere is a screenI'm currently making an AutoIt application that will help ALS people like me who can't speak and have a bad sightthis magnify with a crosshair would be usefullThanksKilhian Edited April 24, 2009 by Kilhian
KaFu Posted April 24, 2009 Posted April 24, 2009 I was said that this version works on Vista:http://www.autoitscript.com/forum/index.php?showtopic=91752 OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
bigc90210 Posted August 5, 2015 Posted August 5, 2015 first time poster, long time lurker. Tried this on win 10, works if screen is set to 100% text sizing. If you turn text sizing up (as an example i have it on 150% because i use a 4k monitor) then it throws everything off. Kind Regards
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