Script 'automático' - Detectar acción en menú de página web

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

youdontknowme
Posts: 14
Joined: 03 Aug 2017, 10:40

Script 'automático' - Detectar acción en menú de página web

01 Sep 2017, 11:37

Buenas tardes a todo! Necesito un poco de ayuda!

Code: Select all

#Singleinstance Force

counter := 0 ;initiate variable
Counter2 := 0
counter3 := 0
counter4 := 0

gui,font, s11, Verdana, w450

gui,add,text,x5 y5 w150 h20 vcounterText,Bandejas: 0
gui,add,text,x5 y25 w150 h20 vcounter2Text,Cerradas: 0
gui,add,text,x5 y45 w150 h20 vcounter3Text,Pendientes: 0
gui,add,text,x5 y65 w150 h20 vcounter4Text,Derivadas: 0 ;add text to the gui, vcounterText sets counterText as a variable associated with this control

Gui +LastFound +AlwaysOnTop +ToolWindow -Theme -Border
Gui, Margin, 5, 5

OnMessage(0x201, "WM_LBUTTONDOWN")

gui,show,x50 y50,Contador   ;not specifying width/height causes it to autosize
return

WM_LBUTTONDOWN() {

	PostMessage, 0xA1, 2

}

!Numpad7:: ;Sumar una cerrada / mas una bandeja

	counter2++
	counter++ ;simplest way to increase a variable by 1

	guicontrol,,counterText, % "Bandejas: " counter  ;update the text control
	guicontrol,,counter2Text, % "Cerradas: " counter2

return

!Numpad8:: ;Sumar una Pendiente / mas una bandeja

	counter3++
	counter++ ;simplest way to increase a variable by 1

	guicontrol,,counterText, % "Bandejas: " counter  ;update the text control
	guicontrol,,counter3Text, % "Pendientes: " counter3

return

!Numpad9:: ;Sumar una Derivada / mas una bandeja

	counter4++
	counter++ ;simplest way to increase a variable by 1

	guicontrol,,counterText, % "Bandejas: " counter  ;update the text control
	guicontrol,,counter4Text, % "Derivadas: " counter4

return

!Numpad1:: ;Restar una Cerrada / una bandeja menos
	counter2--
	counter-- ;simplest way to reduce a variable by 1 

	guicontrol,,counterText, % "Bandejas: " counter
	guicontrol,,counter2Text, % "Cerradas: " counter2

return

!Numpad2:: ;Restar una Pendiente / una bandeja menos
	counter3--
	counter-- ;simplest way to reduce a variable by 1 

	guicontrol,,counterText, % "Bandejas: " counter
	guicontrol,,counter3Text, % "Pendientes: " counter3

return

!Numpad3:: ;Restar una Derivada / una bandeja menos
	counter4--
	counter-- ;simplest way to reduce a variable by 1 

	guicontrol,,counterText, % "Bandejas: " counter
	guicontrol,,counter4Text, % "Derivadas: " counter4

return

guiclose: ;built in event that fires when a gui is closed
exitapp ;when gui is closed, exit the program
Lo que necesito hacer es tener ese mismo GUI, pero que SUME o RESTE por si misma, sin que yo presione o deje de presionar algo.
Algun comnado o funcion, que este "mirando" o "espiando" mis acciones, y dependiendo de la accion SUME en la GUI, uno o mas de los renglones.
Lo que hago yo es seleccionar de un menu en una pagina web(en chrome) y clickeo luego de eso un boton que envia informacion.
Esto ultimo es lo que tiene que "ver" la GUI/script... y dependiendo de que seleccione yo en el menu, sume.
Last edited by Flipeador on 01 Sep 2017, 12:15, edited 1 time in total.
Reason: Descriptive title.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Ayuda con script "automatico"

01 Sep 2017, 12:01

Hola,
En resumen, ¿lo que necesitas es realizar una operación dependiendo el botón en el que hagas clic en un sitio web?...
¿Puedes subir una imagen?

¿doble post?
¿triple post? :!:
Te han respondido en este último enlace, ¿por que has creado un nuevo tema? (me refiero al que tiene como título Background script).
Por cierto, te recomiendo este editor para tus scripts.
youdontknowme
Posts: 14
Joined: 03 Aug 2017, 10:40

Re: Script 'automático' - Detectar acción en menú de página web

01 Sep 2017, 13:01

Hola! Digamos que... Tiene que "Saber" que opcion elegi y que cuando apriete el boton decida sumar en alguna de las opciones...
Imagenes!:
Opciones del menu:
Image
Botones:
Image
Tiene que sumar en estas opciones:
Image

PD: En el primero pedi ayuda para un tema... Eso fue resuelto y nadie mas paso por ese post. Por eso hice el segundo, pero en la comunidad de idioma ingles... En el cual nadie respondio en varios dias, por lo que decidi pedir ayuda en mi idioma. Perdon si eso rompe algunas reglas, no lo sabia.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Script 'automático' - Detectar acción en menú de página web

01 Sep 2017, 13:38

Tu primer tema fue éste, y si recibiste una respuesta, de Masonjar13, pero no le respondiste. Luego creaste este otro, ambos en el foro inglés. Tengo pensado eliminar este último...
Con respecto al tema, Masonjar13 te ha dado una explicación acerca de las complicaciones en otros navegadores que no sea IE.
Si el menú se encuentra siempre en la misma posición, puedes utilizar el comando MouseGetPos para recuperar las coordenadas del botón, luego comprobar, si haces clic estando el cursor en esas coordenadas (el rectángulo perteneciente al botón en el menú) hacer tal acción.
Te dejo un ejemplo comentado:

Code: Select all

CoordMode, Mouse, Screen

/*
    Presiona la tecla F1 para recuperar las coordenadas actuales del mouse.
    Ejemplo de uso:
        1) Posiciona el cursor en la parte superior izquierda del rectángulo del primer botón en el menú.
        2) Anota las coordenadas (X;Y).
        3) Posiciona el cursor en la parte inferior derecha del rectángulo del primer botón en el menú.
        4) Anota estas nuevas coordenadas (X;Y). Presiona Escape para terminar.
        5) Ahora, lee el comentario del siguiente script (LButton::).
*/
F1:: ;tecla F1
MouseGetPos, X, Y
ToolTip % Clipboard := "(" . X . ";" . Y . ") - copiado al portapapeles"
SetTimer, HideTT, 1000
Return

HideTT:
SetTimer, HideTT, Off
ToolTip
Return

~Esc::ExitApp ;tecla Escape para terminar el script

Code: Select all

CoordMode, Mouse, Screen

/*
    Ahora, al presionar el botón izquierdo del mouse, recuperamos las coordenadas y comprobamos.
    Reemplaza las variables X1 y Y1 por las coordenadas que obtuviste en el paso 2 anteriormente.
    Reemplaza las variables X2 y Y2 por las coordenadas que obtuviste en el paso 4 anteriormente.
*/
~LButton:: ;botón izquierdo del mouse
MouseGetPos, X, Y

If (X >= X1 && X <= X2 && Y >= Y1 && Y <= Y2)
    MsgBox Acción!
Return

~Esc::ExitApp  ;tecla Escape para terminar el script
Nota que el primer script es únicamente para recuperar las coordenadas, luego lo puedes cerrar.
Obviamente lo tienes que adaptar a tu script. Esto te sirve únicamente siempre y cuando las coordenadas del menú sean las mismas (la barra de desplazamiento del navegador siempre deben estar en la misma posición para que las coordenadas sean válidas con respecto al botón).
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Script 'automático' - Detectar acción en menú de página web

01 Sep 2017, 13:45

Como última opción, puedes utilizar esta herramienta, ejecuta el script y presiona el botón Bloq Mayús.
Antes de presionar el botón, debes posicionar el cursor sobre el botón, si te muestra el texto, pues, tienes suerte, si no lo hace, no tengo idea que más puedes intentar. :think:
youdontknowme
Posts: 14
Joined: 03 Aug 2017, 10:40

Re: Script 'automático' - Detectar acción en menú de página web

04 Sep 2017, 07:53

Flipeador wrote:Tu primer tema fue éste, y si recibiste una respuesta, de Masonjar13, pero no le respondiste. Luego creaste este otro, ambos en el foro inglés. Tengo pensado eliminar este último...
Con respecto al tema, Masonjar13 te ha dado una explicación acerca de las complicaciones en otros navegadores que no sea IE.
Si el menú se encuentra siempre en la misma posición, puedes utilizar el comando MouseGetPos para recuperar las coordenadas del botón, luego comprobar, si haces clic estando el cursor en esas coordenadas (el rectángulo perteneciente al botón en el menú) hacer tal acción.
Te dejo un ejemplo comentado:

Code: Select all

CoordMode, Mouse, Screen

/*
    Presiona la tecla F1 para recuperar las coordenadas actuales del mouse.
    Ejemplo de uso:
        1) Posiciona el cursor en la parte superior izquierda del rectángulo del primer botón en el menú.
        2) Anota las coordenadas (X;Y).
        3) Posiciona el cursor en la parte inferior derecha del rectángulo del primer botón en el menú.
        4) Anota estas nuevas coordenadas (X;Y). Presiona Escape para terminar.
        5) Ahora, lee el comentario del siguiente script (LButton::).
*/
F1:: ;tecla F1
MouseGetPos, X, Y
ToolTip % Clipboard := "(" . X . ";" . Y . ") - copiado al portapapeles"
SetTimer, HideTT, 1000
Return

HideTT:
SetTimer, HideTT, Off
ToolTip
Return

~Esc::ExitApp ;tecla Escape para terminar el script

Code: Select all

CoordMode, Mouse, Screen

/*
    Ahora, al presionar el botón izquierdo del mouse, recuperamos las coordenadas y comprobamos.
    Reemplaza las variables X1 y Y1 por las coordenadas que obtuviste en el paso 2 anteriormente.
    Reemplaza las variables X2 y Y2 por las coordenadas que obtuviste en el paso 4 anteriormente.
*/
~LButton:: ;botón izquierdo del mouse
MouseGetPos, X, Y

If (X >= X1 && X <= X2 && Y >= Y1 && Y <= Y2)
    MsgBox Acción!
Return

~Esc::ExitApp  ;tecla Escape para terminar el script
Nota que el primer script es únicamente para recuperar las coordenadas, luego lo puedes cerrar.
Obviamente lo tienes que adaptar a tu script. Esto te sirve únicamente siempre y cuando las coordenadas del menú sean las mismas (la barra de desplazamiento del navegador siempre deben estar en la misma posición para que las coordenadas sean válidas con respecto al botón).
Genial! Perdon por la demora, no estuve con tiempo!... Voy a intentar esto ahora mismo...

Te hago otra pregunta... Estuve pensando en usar un parse... digamos asi:
Cada vez que vos seleccionas una opcion del menu. Se escribe automaticamente en la web, en un renglon... Tenia pensando que se parsee ese renglon, y segun lo que este escrito, se sume en el renglon

Image

El renglon es ese que esta en amarillo. Ahi esta vacio. Pero al seleccionar opcion x, aparece asi.

Ejemplo:

Image

Lo habia intentando antes, pero no sabia parsear. Y parseaba mal, me daba renglones mas abajo, o me devolvia %1ª5%202% cosas raras.

Alguna idea de esto? El teorico de parse que esta en ahk no lo entiendo del todo... Intento que me devuelva un MsgBox con la info, a ver si lo estoy haciendo bien y no me devuelve.


Gracias por todo desde ya!
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Script 'automático' - Detectar acción en menú de página web

04 Sep 2017, 22:16

Prueba el script que te pasé, el segundo, intenta usar las coordenadas del 'renglón', y prueba si te aparece el texto.
Si quieres pon tu script, el que utilizas y dices que te da mal el resultado, para ver la lógica que estás queriendo aplicar.
youdontknowme
Posts: 14
Joined: 03 Aug 2017, 10:40

Re: Script 'automático' - Detectar acción en menú de página web

05 Sep 2017, 09:34

Flipeador wrote:Prueba el script que te pasé, el segundo, intenta usar las coordenadas del 'renglón', y prueba si te aparece el texto.
Si quieres pon tu script, el que utilizas y dices que te da mal el resultado, para ver la lógica que estás queriendo aplicar.

Decidi hacerlo por imagesearch, dado que no cambio background ni tampoco el texto... Y funciona. Me muestra el MsgBox indicado siempre.

El problema es que esto solo me funciona a mi, lo pruebo en otra pc, que tambien tiene acceso al compartido donde esta el ahk, junto con las 10 imagenes y no hace nada... alguna idea?

Dejo el code:

Code: Select all

CoordMode, Pixel, Screen


SetWorkingDir %A_ScriptDir%
SetWorkingDir, \\public\Publick\ahktest

F6::

WinWait, Bandeja Operadores - Google Chrome, 
IfWinNotActive, Bandeja Operadores - Google Chrome, , WinActivate, Bandeja Operadores - Google Chrome, 
WinWaitActive, Bandeja Operadores - Google Chrome, 


Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\pbafaltafirme.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, com
		}
	}

com:
Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\com.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, RG
		}
	}

RG:
Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\rg.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, gdlc
		}
	}

gdlc:
Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\gdlc.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, adsl
		}
	}
adsl:
Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\adsl.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, pormomentos
		}
	}

pormomentos:

Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\pormomentos.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, compromiso
		}
	}

compromiso:

Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\compromiso.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, pendiente
		}
	}

pendiente:

Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\pendiente.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, secierrareclamo
		}
	}

secierrareclamo:

Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024,  %A_ScriptDir%\secierrareclamo.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!!!
			return
		}
	else if ErrorLevel = 1
		{
			Goto, franqueado
		}
	}

franqueado:

Loop {
ImageSearch, VarX, VarY, 0, 0, 1280, 1024, %A_ScriptDir%\franqueado.bmp

	if ErrorLevel = 0
		{
			MsgBox, Got'em!
			return
		}
	else if ErrorLevel = 1
		{
			break
		}
	}

User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Script 'automático' - Detectar acción en menú de página web

05 Sep 2017, 12:54

Todo tu código podría optimizarse de la siguiente manera:

Code: Select all

CoordMode, Pixel, Screen

SetWorkingDir %A_ScriptDir%
SetWorkingDir \\public\Publick\ahktest
If (ErrorLevel)
    MsgBox, SetWorkingDir Error!

F6::
ToolTip Esperando... #1
WinWait Bandeja Operadores - Google Chrome
ToolTip Esperando... #2
WinWaitActive
ToolTip

For Each, ImageFile in ["pbafaltafirme", "com", "rg", "gdlc", "adsl", "compromiso", "pormomentos", "pendiente", "secierrareclamo", "franqueado"]
{
    ImageSearch, VarX, VarY, 0, 0, 1280, 1024, %ImageFile%.bmp

    If (!ErrorLevel)
    {
        MsgBox Got'em!!!`n%ImageFile%
        Break
    }
    Else If (ErrorLevel == 2)
    {
        MsgBox Error! - no se ha encontrado:`n%ImageFile%.bmp
        ExitApp
    }
}
return
Puedes probar modificando 1280 y 1024 por A_ScreenWidth y A_ScreenHeight respectivamente.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 44 guests