Autoit en español
Aplicaciones con Autoit - Juan Antonio Villalpando
-- Tutorial de iniciación a Autoit --
Volver al índice del tutorial
____________________________
117.- Otro bloqueo de ordenador. Estudio de un Temporizador en vez del Sleep.
- Vamos a seguir este tutorial: http://www.elitepvpers.com/forum/autoit/403140-tutorial-how-make-bot.html
- Aprenderemos a utilizar un temporizador en vez del Sleep, ya que cuando utilizamos éste, la aplicación se queda bloqueada y no podemos hacer nada hasta que no termine la temporización.
- Este script no lo ejecutes porque se quedará el ordenador bloqueado.
- En key escribes un texto corto y en time 5000.
- Cada 5 segundos enviará ese texto a la ventana que tengas abierta y acepte texto (por ejemplo el Bloc de notas).
- Te costará trabajo cerrar este script ya que está continuamente en bucle y además está en estado de Sleep la mayor parte del tiempo. Mientras está en Sleep, está bloqueado.
Bloqueo el ordenador. |
#include <GUIConstantsEx.au3>
# Creación de los controles
GUICreate("Título de la ventana.", 335, 100)
GUISetState(@SW_SHOW)
GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$startbutton = GUICtrlCreateButton("Start", 190, 8, 60)
# Fin de creación de los controles
While 1
$msg = GUIGetMsg()
Select
Case $msg = $startbutton
$send1 = GUICtrlRead($key1)
$sleep1 = GUICtrlRead($time1)
While 1
Send($send1)
Sleep($sleep1)
WEnd
Case $msg = $GUI_EVENT_CLOSE
GUIDelete()
ExitLoop
EndSelect
WEnd
|
- Mientras la aplicación está en Sleep, no puede hacer otra cosa, no podemos pulsar teclas mientras está en el tiempo de Sleep. Para que pueda temporizar y además tenga la posibilidad de hacer otra cosa se utiliza un Timer.
- Aquí tenemos un código de temporización parecido al Sleep, pero se puede pulsar las teclas durante el tiempo temporizado.
- Crea un tiempo inicial en TimerInit y va consultando TimerDiff hasta que la diferencia se 3 segundos.
Temporizador. Timer. |
Temporizador. Timer.
$timer = TimerInit()
While 1
$timed = TimerDiff($timer)
If $timed > 3000 Then ; we use greater than (>) because sometimes it might get skipped
MsgBox(1,"TimerDiff","TimerDiff : "&$timed)
$timer = TimerInit()
EndIf
WEnd
|
- En el siguiente código se inserta un Temporizador y podemos pararlo fácilmente.
Código con Temporizador para poderlo parar. |
Dim $timer, $run = False, $label[2]=['Start','Stop']
# Creación de los controles
$gui = GUICreate("Forsaken's Bot", 335, 100)
GUISetState()
GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)
$button = GUICtrlCreateButton($label[$run], 190, 8, 60)
# Fin de creación de los controles
While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case $button
$run = Not $run
GUICtrlSetData($button, $label[$run])
$timer = 0
Case Else
If $run Then
If TimerDiff($timer) > GUICtrlRead($time1) And Not WinActive($gui) Then
Send(GUICtrlRead($key1))
$timer = TimerInit()
EndIf
EndIf
EndSwitch
WEnd
|
- Con este código enviamos mediante Send el número "1" si el color del elemento pulsado es igual al color del elemento pulsado anteriormente.
- Abre el Bloc de notas y ejecútalo. Pulsa F2
Obtener color y escribir "1" |
HotKeySet("{F2}", "_getDefault")
$x = 0
$y = 0
$color = 0
$newColor = 0
$status = "off"
While 1
If $status = "on" Then
If _getCurrentColor($x, $y) <> $color Then
Send("1")
EndIf
EndIf
WEnd
Func _getDefault()
$coord = MouseGetPos()
$x = $coord[0]
$y = $coord[1]
$color = Hex(PixelGetColor( $coord[0], $coord[1]), 6)
$status = "on"
EndFunc
Func _getCurrentColor($xDef, $yDef)
$newColor = Hex(PixelGetColor( $xDef, $yDef), 6)
Return ($newColor)
EndFunc
|
_____________________________________________________________
- Propuestas.
- Script para crear un laberinto aleatorio:
https://www.autoitscript.com/forum/topic/187454-a-maze-ing-generator/
_____
|