Página 1 de 1

Loop si cambia

Publicado: 06 Jun 2010, 16:56
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.

Re: Loop si cambia

Publicado: 07 Jun 2010, 02:46
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:)

Re: Loop si cambia

Publicado: 07 Jun 2010, 03:15
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

Re: Loop si cambia

Publicado: 07 Jun 2010, 03:37
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:)

Re: Loop si cambia

Publicado: 07 Jun 2010, 03:56
por Autoiter
Perfecto. :smt041 :smt041 :smt041 :smt041 :smt041

Que velocidad. Muchicimas gracias BasicOs :smt039