entonces no se existe la posibilidad de yo asignarle un área dentro de todo el marco de mi pantalla de monitor a esta excelente función
Para explicitar tu codigo:
Code: Select all
0, 0, % A_ScreenWidth, % A_ScreenHeight
son las coordenadas de la esquina superior izquierda (0, 0) y de la esquina inferior derechar (1360, 768), respectivamente - es decir tu pantalla entera: la busqueda concerne toda tu pantalla.
En vez de utilizar esos valores utiliza variables que corresponden con las del area en la que quieres llevar la busqueda.
Con codigo mas abajo, al presionar F4, podras visualemente colocar y delimitar el area (las coordenadas son automaticamente copiadas al portepapeles):
Code: Select all
#NoEnv
#Warn
#SingleInstance force
CoordMode, Window, Screen
PSX1 := 0, PSY1 := 0, PSX2 := A_ScreenWidth, PSY2 := A_ScreenHeight ; coordenadas por defecto del pixelsearch
Color :="0x172240" ; coloca esta asignación fuera del loop de otra manera va a ser ejecutada inútilmente a cada iteración del loop.
; GUI para rescatar y asignar nuevas coordenadas:
Gui, 1:+hwndID +AlwaysOnTop -Caption +Resize
Gui, 1:Add, Text, vtextControl x0 y0 w202 h15 gGUIsubrutina1,
Gui, 1:Add, Button, vbuttonControl x1 y16 w200 h30,
Hotkey, IfWinActive, ahk_id %ID%
Hotkey, ~LButton Up, GUIsubrutina2, on
return ; fin de la parte auto-ejecutada del script
F4:: ; para mostrar el GUI y modificar visualmente las coordenadas por defecto
Gui, 1:Show, w202 h47,
WinSet, Transparent, 140, ahk_id %ID% ; hace que la GUI sea un poco transparente
GUIsubrutina2: ; subrutina ejecutada al desapretar el LButton sobre la GUI
WinGetPos, X1, Y1, W, H, ahk_id %ID%
clipboard := "[X: " . X1 . ", Y: " . Y1 . ", W: " . (X2:=X1+W) . ", H: " . (Y2:=Y1+H) . "]" ; copia las coordenadas al portapapeles
GuiControl, 1:, buttonControl, % clipboard
return
; ============ subrutinas de la GUI ============
GUIsubrutina1:
PostMessage, 0x00A1, 2,,, A ; https://autohotkey.com/board/topic/80594-how-to-enable-drag-for-a-gui-without-a-titlebar/
return
GuiSize: ; subrutina arrancada cada vez que la ventana mueve
GuiControl, 1:Move, textControl, W%A_GuiWidth% H%A_GuiHeight%
GuiControl, 1:Move, buttonControl, % "X" . A_GuiWidth/2 - 100 . " Y" . A_GuiHeight/2 - 15 ; centra el boton
return
GUIEscape: ; subrutina arrancada al presionar escape
Gui, 1:Hide
return
; ====================================
F1::
SetMouseDelay, 7 ; fuera del loop
Loop {
Loop, 2
{
PixelSearch, X, Y, % PSX1, % PSY1, % PSX2, % PSY2, % Color,, Fast ; utiliza las variables resctada utilzando el GUI o las por defecto
if not (ErrorLevel)
break ; detiene el loop
}
Click %X%, %Y% ; hace click a las coordenadas X, Y (eventualmente actualizadas, o por la primera, o por la segunda ejecuccion de PixelSearch).
MouseClick, Left, 765, 394 ; hace clic en cordenada fija
sleep, 400 ; te aconsejo colocar un sleep aqui: eso permite ahorrar tu CPU
}
return
F2::Pause
F3::ExitApp