Bueno hace no mucho conocí AutoIt ([http://www.autoitscripts.com][0]">[http://www.autoitscripts.com][1]) y la verdad es que me gusta bastante para hacer pequeñas tareas automáticamente. El otro día me hizo falta realizar una tarea tras X minutos y decidí hacer una cuenta atrás para usarla siempre que necesite.
Y se me ha ocurrido presentaros AutoIt con este programita, que es una cuenta atrás que al finalizar hace sonar una alarma. Pondré el código más adelante, que quiero añadirle más opciones, de momento os dejo que juguéis con el programa:
[attachment=0]
#include
#include
#include
#include
HotKeySet("{ESC}", "Cerrar")
HotKeySet("{PAUSE}", "Pausa")
HotKeySet("{F1}", "Ayuda")
Global $alarma=0
Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
$mainwindow = GUICreate("Cuenta atrás", 300, 100, -1, -1, $WS_POPUP)
GUISetFont(10, 400, Default, "Comic Sans MS")
GUISetBkColor(0x80B5F0)
_GuiRoundCorners($mainwindow, 0, 0, 25, 25)
GUISetOnEvent($GUI_EVENT_CLOSE, "Cerrar")
$okbutton = GUICtrlCreateButton("GO!", 230, 60, 50)
GUICtrlSetOnEvent($okbutton, "GO")
GUICtrlCreateLabel("Tiempo total para la cuenta atrás", 10, 5)
GUICtrlCreateLabel("Horas:", 10, 25)
$horas = GUICtrlCreateInput("00", 50, 25, 30, 20)
GUICtrlCreateLabel("Minutos:", 95, 25)
$min = GUICtrlCreateInput("00", 145, 25, 30, 20)
GUICtrlCreateLabel("Segundos:", 190, 25)
$sec = GUICtrlCreateInput("00", 252, 25, 40, 20)
$restante = GUICtrlCreateLabel(" 00:00:00 ", 100, 60, 80)
GUICtrlSetFont($restante, 12, 450, "Tahoma")
$detalles=GUICtrlCreateLabel("ESC para salir. PAUSE para pausar. F1 ver ayuda.", 20, 88)
GUICtrlSetFont($detalles, 6, 300, "Microsoft Sans Serif")
GUISetState(@SW_SHOW)
While 1
Sleep(1000) ; Idle around
WEnd
Func GO()
SoundPlay( "beep.wav", 0 )
$h=int(GUICtrlRead($horas))
$m=int(GUICtrlRead($min))
$s=int(GUICtrlRead($sec))
$restoS=mod($s, 60)
$m=$m+( ($s-$restoS)/60 )
$s=$restoS
$restoM=mod($m, 60)
$h=$h+( ($m-$restoM)/60 )
$m=$restoM
; idea II
;$total= $h*60*60 + $m*60 + $s
;$inicio = TimerInit()
;$final = $inicio + $total*1000
;-----------------
GUICtrlSetData($restante, string( StringFormat("%02s",$h) & ":" & StringFormat("%02s",$m) & ":" & StringFormat("%02s",$s) ))
;MsgBox(0, "GUI Event", "Al calcular ha quedado: " & StringFormat("%02s",$h) & ":" & StringFormat("%02s",$m) & ":" & StringFormat("%02s",$s))
While $h>0 or $m>0 or $s>0
While $s > 0
Sleep(1000)
$s=$s-1
GUICtrlSetData($restante, string( StringFormat("%02s",$h) & ":" & StringFormat("%02s",$m) & ":" & StringFormat("%02s",$s) ))
Wend
if $m>0 Then
$m=$m-1
$s=60
ElseIf $h>0 Then
$h=$h-1
$m=59
$s=60
EndIf
Wend
;hemos llegado al momento final de la cuenta atras
accion()
;$hora = @HOUR & ":" & @MIN & ":" & @SEC & " del " & @MDAY & "/" & @MON
;MsgBox(0, "Resultado", "Fin de la cuenta atrás, son las: " & $hora)
EndFunc
Func Accion()
;sonido mientras no se pulse un boton
GUICtrlSetFont($restante, 10, 400, "Arial")
GUICtrlSetData($restante, "Presione ESC")
$alarma=1
SoundSetWaveVolume ( 60 ) ; en porcentaje
while ($alarma == 1)
SoundPlay( "alarma.wav", 0 ) ; 0 indica que el script siga mientras suena la alarma
sleep(1500)
Wend
EndFunc
Func Ayuda()
;Shellexecute("http://universojuegos.es/");; here's where the action takes place
$oIE = _IECreate( "http://foro.universojuegos.es/viewtopic.php?f=68&t=3868" , 0 , 1 )
EndFunc
Func Pausa()
MsgBox(4096, "Programa pausado", "El programa está parado." & @LF & " ¿Continuar?")
EndFunc
Func Cerrar()
if ($alarma==1) Then
$alarma=0
GUICtrlSetFont($restante, 12, 450, "Tahoma")
GUICtrlSetData($restante, "00:00:00")
Else
MsgBox(0, "Salir", "Gracias por usar el programa", 1)
Exit
EndIf
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
; Round GUI Corners - http://www.autoitscript.com/forum/index.php?s=&showtopic=19370&view=findpost&p=191072
; Author - gafrost
Dim $pos, $ret, $ret2
$pos = WinGetPos($h_win)
$ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3)
If $ret[0] Then
$ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1)
If $ret2[0] Then
Return 1
Else
Return 0
EndIf
Else
Return 0
EndIf
DllClose($ret)
DllClose($ret2)
EndFunc ;==>_GuiRoundCorners
[0]: <a href=
[1]: http://www.autoitscripts.com