Loop si cambia

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Autoiter
Mensajes: 9
Registrado: 31 May 2010, 13:09

Loop si cambia

Mensaje por Autoiter »

Hola a todos.

Una nueva duda, ya que he probado cien maneras y no consigo resolverlo.

Necesito crear un loop que me chequee cuando se produce un cambio en la pantalla y si ese cambio se produce, me ejecute el script.

Código: Seleccionar todo

Dim $PREVUBBTN
Dim $UBBTN

AdlibRegister ( "UbicBoton", 1000)

While $UBBTN = $PREVUBBTN

		If PixelGetColor(258, 289) = 0xFFFFFF Then ; >>>> El botón está en 0
		$UBBTN = 0
		EndIf
		If PixelGetColor(410, 273) = 0xFFFFFF Then ; >>>> El botón está en 9
		$UBBTN = 9
		EndIf
		If PixelGetColor(527, 190) = 0xFFFFFF Then ; >>>> El botón está en 8
		$UBBTN = 8
		EndIf
		If PixelGetColor(526, 156) = 0xFFFFFF Then ; >>>> El botón está en 7
		$UBBTN = 7
		EndIf
		If PixelGetColor(398, 105) = 0xFFFFFF Then ; >>>> El botón está en 6
		$UBBTN = 6
		EndIf
		If PixelGetColor(288, 102) = 0xFFFFFF Then ; >>>> El botón está en 5
		$UBBTN = 5
		EndIf
		If PixelGetColor(184, 115) = 0xFFFFFF Then ; >>>> El botón está en 4
		$UBBTN = 4
		EndIf
		If PixelGetColor(95, 155) = 0xFFFFFF Then ; >>>> El botón está en 3
		$UBBTN = 3
		EndIf
		If PixelGetColor(83, 185) = 0xFFFFFF Then ; >>>> El botón está en 2
		$UBBTN = 2
		EndIf
		If PixelGetColor(202, 285) = 0xFFFFFF Then ; >>>> El botón está en 1
		$UBBTN = 1
		EndIf

WEnd

Func UbicBoton()

	$PREVUBBTN = $UBBTN
	MsgBox(0, "La Ubicación ha cambiado", $UBBTN, 2) ;<<<<<<<<<<<< AQUÍ IRÍA EL SCRIP <<<<<<<<<

EndFunc


Muchas gracias desde ya.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Loop si cambia

Mensaje por BasicOs »

Hola
Solo tienes que llamar al Script con UbicBoton(), no obstante, lo tienes muy facil como lo pones, para que veas ejemplos con más alternativas te envio algunos: :smt020 :smt020 :smt023

Por ejemplo aquí tienes algun ejemplo funcionando de esto:
http://www.emesn.com/autoitforum/viewto ... =19&t=1812
Una busqueda trae un montón:
http://www.emesn.com/autoitforum/search ... elGetColor
Si tienes problem consultalo a ver como lo arreglamos,
Salu22:)
Autoiter
Mensajes: 9
Registrado: 31 May 2010, 13:09

Re: Loop si cambia

Mensaje por Autoiter »

Hola BasicOs.

Creo me me expresé mal. El problema no lo tengo para identificar los cambios en la pantalla, sino para ordenar el script para que se ejecute solo cuando ocurre un cambio y no cada cierto tiempo como ocurre en mi ejemplo.

He probado de mil maneras pero no logro acomodar el loop. :smt009 :smt010
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Loop si cambia

Mensaje por BasicOs »

Para un cambio tienes que dar un valor a una variable y compararla continuamente, por ejemplo sleep(1000), a ver cuando el valor nuevo es diferente al anterior,

Código: Seleccionar todo

While 1
sleep(1000)
if $variableanterior<>$variablequecambia then ; "se han cambiado las variables"
  $variableanterior=$variablequecambia ; vuelven a ser iguales
  ejecutoScriptporCambio()
endif
Wend
No se si esta es la pregunta?
Salu22:)
Autoiter
Mensajes: 9
Registrado: 31 May 2010, 13:09

Re: Loop si cambia

Mensaje por Autoiter »

Perfecto. :smt041 :smt041 :smt041 :smt041 :smt041

Que velocidad. Muchicimas gracias BasicOs :smt039
Responder