HOME || Programación || Función SetTimer de Autohotkey
Creado el: 19 abril, 2019 - Autor: lornal
AMP Versión AMP: Función SetTimer de Autohotkey (Versión AMP)

Función SetTimer de Autohotkey

Función SetTimer de Autohotkey

Cuantas veces hemos querido repetir una operación cada cierto período de tiempo?; para esto sirve la función SetTimer. Inicia una subrutina del Script y la repite automáticamente cada cierto periodo de tiempo.

La estructura de SetTimer

SetTimer, Etiqueta, PeriodoTiempoOnOfDelete, Prioridad

Los parámetros

  • Etiqueta: Es el nombre de la subrutina que vamos a ejecutar y se indica de la siguiente manera:
SetTimer, VamosALaEtiqueta, 1000
VamosALaEtiqueta:
; resto de nuestro código a ejecutar
Return

En este caso la función, transcurridos 1000 milisegundos (1 segundo), ejecuta la subrutina VamosALaEtiqueta:

Se ejecutarán todos los comandos hasta que se encuentre un Return o Exit

Es posible usar variables en el nombre de etiqueta. Por ejemplo podemos definir una variable MiEtiqueta = NombreDeEtiqueta y hacemos referencia de esta manera en la función:

#Persistent

; Almacenamos el nombre de la etiqueta en una variable
MiEtiqueta = NombreDeEtiqueta

; Ejecutamos SetTimer en 3 seguntos mediante variable
SetTimer, %MiEtiqueta%, 3000

MsgBox, A los 3 segundos se ejecutará SetTimer

Return

NombreDeEtiqueta:
	MsgBox, Se ejecutó SetTimer!!
Return

Para que este Script no se cierre y se ejecute la etiqueta a los 3 segundos debemos usar el comando #Persistent en el encabezado de nuestro Script. Podemos probar no escribiendo este comando y al ejecutar veremos el primer MsgBox y si aceptamos rápidamente (antes de los 3 segundos) el Script se cerrará sin que se llegue a ejecutar el SetTimer.

Parámetro PeriodoTiempoOnOfDelete

Los valores de este parámetro pueden ser 4:

PeriodoTiempo, On, Off, Delete

PeriodoTiempo

Es un entero que representa la cantidad de milisegundos para que se ejecute la función. Si no se especifica ningún valor, el valor predeterminado será 250 si el temporizador no existe, es decir si es la primera vez que lo ejecutamos. Si el temporizador ya existe, y lo “arrancamos” nuevamente, y no le indicamos valor de tiempo tomará el valor anterior.

Si el valor es positivo se ejecutará cada ese intervalo de tiempo.

Si el valor es negativo, por ejemplo -100, se ejecutará a los 100 milisegundos y automáticamente se apagará SetTimer.

El valor máximo de este parámetro es 4294967295 (49,7 días)

Vemos un ejemplo para aclarar un poco:

#Persistent

SetTimer, NombreDeEtiqueta, -5000
Return

NombreDeEtiqueta:
	
MsgBox, SetTimer se deshabilitó ya que el Tiempo indicado fue negativo
ExitApp

Otro ejemplo:

#Persistent

MsgBox, Se programará un SetTimer de 3 segundos
SetTimer, NombreDeEtiqueta, 3000
Return

NombreDeEtiqueta:
	
	SetTimer, NombreDeEtiqueta, OFF
	MsgBox, SetTimer se apago!!
	Goto, Encender

Encender:
	MsgBox, 4, , Encender nuevamente el temporizador?
	
	IfMsgBox, NO
		GoTo, Apagar
	IfMsgBox, YES
		SetTimer, NombreDeEtiqueta, ON
		Return

Apagar:
	SetTimer, NombreDeEtiqueta, DELETE
	MsgBox, Se eliminó el temporizador. Script terminado.
	ExitApp

Con este parámetro podemos controlar todo nuestro Script mediante SetTimer, para que ejecute una u otra cosa cada cierto periodo de tiempo.

Parámetro Prioridad

Por lo general este parámetro no se utiliza. Pero si tenemos varios SetTimer en ejecución y nuestro Script es algo “complejo” quizás nos convenga definir las prioridades de los Timer que obviamente afectan a la ejecución de las Subrutinas dentro de nuestro Script.

El valor por defecto es 0 y puede contener un entero entre -2147483648 y 2147483647

Conclusiones de SetTimer

Hay que tener en cuenta que, a diferencia de otros lenguajes de programación, el SetTimer no detendrá el conteo de tiempo si una ventana MsgBox está esperando ser aceptada o cerrada.

Si utilizamos SetTimer en un temporizador que ya existe y le indicamos un tiempo nuevo o simplemente el valor ON o simplemente lo dejamos en blanco, el temporizador se restablece y, antes de que se ejecute nuevamente la subrutina, debe terminar de ejecutarse el código de ésta en su totalidad.

Para saber cuantos temporizadores existen y cuantos están habilitados se puede usar la función KeyHistory. Esto muestra una consola de Autohotkey con toda la información de los Timer en ejecución.

Te fue útil el artículo? Califícalo

Votos: - Promedio: