Descargar EXE
Código:
Código: Seleccionar todo
#include <GUIconstants.au3>
#include <Staticconstants.au3>
#include <Windowsconstants.au3>
#include <Editconstants.au3>
#include<Misc.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()
;Author: Larrydalooza
WinSetOnTop($MyhWnd,"",1)
$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)
;Author: Larrydalooza
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
Func CrossHairsINV(ByRef $hdc)
;Author: Larrydalooza
Local CONST $NOTSRCCOPY = 0x330008
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
Func _exit()
Exit
EndFunc
Bueno, la función de la lupa la creó Larry (uno de los grandes colaboradores de AutoIt). Yo me tomé el trabajo de estudiarla y hacerla lo más general posible, usando las funciones de _WinApi y _GDIplus para que se puede embeber dentro de cualquier ventana o usar como uno quiera!
Aquí la función:
Código: Seleccionar todo
Func MAG($hWnd, $iLeft, $iTop, $win_width, $win_height, $x, $y, $width, $height, $GDIdll = "gdi32.dll")
;===============================
; Function Name: Mag()
; Parameter(s): $hWnd: handle to the GUI
; $iLeft: Left coordinate of the zoom window (relative to $hWnd window)
; $iTop: Top coordinate of the zoom window (relative to $hWnd window)
; $x: X coordinate of the upper left corner of the area to zoom
; $y: Y coordinate of the upper left corner of the area to zoom
; $witdh: width of the area to zoom
; $height: height of the area to zoom
; $win_width: width of the zoom window
; $win_height: height of the zoom window
; $GDIdll: [optional] handle to gdi32.dll. Pass this parameter when calling repeatedly.
;Requires: #include <WinApi.au3>
; Author(s): Larry, modified a bit by Nahuel
;===============================
$MyHDC = _WinAPI_GetDC($hWnd)
$DeskHDC = _WinAPI_GetDC(0)
DllCall($GDIdll, "int", "StretchBlt", "int", $MyHDC, "int", $iLeft, "int", $iTop, "int", $win_width, "int", $win_height, "int", $DeskHDC, "int", $x, "int", $y, "int", $width, "int", $height, "long", 0x00CC0020)
_WinAPI_ReleaseDC(0, $DeskHDC)
_WinAPI_ReleaseDC($hWnd, $MyHDC)
EndFunc ;==>MAG
Ejemplo:$hWnd: handle de la ventana a embeber
$iLeft: Coordenada izquierda de la ventana de zoom (relativo a la ventana $hWnd)
$iTop: Coordenada superior de la ventana de zoom (relativa a la ventana $hWnd)
$win_width: Ancho de la ventana de zoom.
$win_height: Alto de la ventana de zoom.
$x: Coordenada izquierda del área de la pantalla a maximizar.
$y: Coordenada superior del área de la pantalla a maximizar.
$witdh: Ancho del área a maximizar.
$height: Alto del área a maximizar.
$GDIdll: [optional] handle de gdi32.dll. Pasar este parámetro usando Dllopen si se llama a la función repetidamente.
Código: Seleccionar todo
MAG(0,0,0,150,150,@DesktopWidth-100,0,100,100)
Acá otro ejemplo usando una GUI. Es mucho más efectivo, como verán y muestra todo lo que se puede hacer con ésto.
Código: Seleccionar todo
#include <WinApi.au3>
$handle = GUICreate("Mag",200,200)
GUISetState()
MAG($handle,0,0,200,200,0,0,100,100)
Do
Until GUIGetMsg()=-3
Func MAG($hWnd, $iLeft, $iTop, $win_width, $win_height, $x, $y, $width, $height, $GDIdll = "gdi32.dll")
;===============================
; Function Name: Mag()
; Parameter(s): $hWnd: handle to the GUI
; $iLeft: Left coordinate of the zoom window (relative to $hWnd window)
; $iTop: Top coordinate of the zoom window (relative to $hWnd window)
; $x: X coordinate of the upper left corner of the area to zoom
; $y: Y coordinate of the upper left corner of the area to zoom
; $witdh: width of the area to zoom
; $height: height of the area to zoom
; $win_width: width of the zoom window
; $win_height: height of the zoom window
; $GDIdll: [optional] handle to gdi32.dll. Pass this parameter when calling repeatedly.
;Requires: #include <WinApi.au3>
; Author(s): Larry, modified a bit by Nahuel
;===============================
$MyHDC = _WinAPI_GetDC($hWnd)
$DeskHDC = _WinAPI_GetDC(0)
DllCall($GDIdll, "int", "StretchBlt", "int", $MyHDC, "int", $iLeft, "int", $iTop, "int", $win_width, "int", $win_height, "int", $DeskHDC, "int", $x, "int", $y, "int", $width, "int", $height, "long", 0x00CC0020)
_WinAPI_ReleaseDC(0, $DeskHDC)
_WinAPI_ReleaseDC($hWnd, $MyHDC)
EndFunc ;==>MAG