Página 1 de 2
Ciclo
Publicado: 23 Jun 2011, 22:46
por Winer1
Código: Seleccionar todo
$Timer = TimerInit()
Sleep(3000)
If TimerDiff($Timer) >= 3000 And $Check < 3 Then
Send("{F1}")
$Timer2 = TimerInit()
Sleep(25000)
como hacer de eso un ciclo por cierto esta mal escrito he intentado de muchas formas arreglarlo pero simpre me manda error la ultima linea. Espero me puedan ayuda.
Re: Ciclo
Publicado: 23 Jun 2011, 23:53
por ms999
no entinedo a que te referis... podes postear el codigo completo, de seguro es el que te pase yo...
un ciclo o un bucle mejor dicho es algo que se repetira hasta que una condicion se cumpla, los comandos para iniciar y cerrar los buclas son varios depende del tipo de condicion que queramos usar
por ejemplo.
El codigo escrito entre while true y Wend se repetira infinitamente salvo que algo dentro de ese codigo diga lo contrario por ejemplo un comando Exitloop() por ejempolo
Código: Seleccionar todo
$Timer = TimerInit() ; Esto va afuera porque sino el valor que se aloja en $timer estaria constantemente cambiando
while true
Sleep(50)
If TimerDiff($Timer) >= 3000 then exitloop
wend
consolewrite(TimerDiff($Timer)&@CRLF) ; Esto te muestra el tiempo que paso desde que se ejecuto $Timer = TimerInit()
El true luego del while es la condicion, ahi podes poner otra cosa como
Código: Seleccionar todo
local $a = 0
While $a < 10
$a += 1 ; Esto seria $a = $a + 1
sleep(20)
WEnd
O sino otro ejemplo con tu codigo.
Código: Seleccionar todo
$Timer = TimerInit() ; Esto va afuera porque sino el valor que se aloja en $timer estaria constantemente cambiando
While TimerDiff($Timer) <= 3000
Sleep(50)
WEnd
ConsoleWrite(TimerDiff($Timer) & @CRLF) ; Esto te muestra el tiempo que paso desde que se ejecuto $Timer = TimerIni
Re: Ciclo
Publicado: 24 Jun 2011, 00:58
por Winer1
Código: Seleccionar todo
While True
Sleep(3000)
Send ("{F1}")
Sleep(3000)
Send ("{F1}")
Sleep(3000)
Send ("{F1}")
Sleep(25000)
Wend
While True
Sleep(60000)
Send ("{F3}")
Sleep(1000)
Send ("{F3}")
Sleep(1000)
Send ("{F3}")
Sleep(1000)
Send ("{F3}")
Sleep(1000)
Send ("{F3}")
WEnd
Ahora mi pregunta como agregar a estos dos en un ciclo pero que actuen por separado.
Re: Ciclo
Publicado: 24 Jun 2011, 05:01
por ms999
mmmh osea que actuen simultaneamente ambos bucles...
Si te referis a eso lo veo algo mas complicado... tendrias que rediseñar el script y agregar una funcion y algunas condiciones y luego usar AdlibRegister() que lo que hace es ejecutar una funcion cada cierta cantidad de tiempo... pero para que funcionen bien los tiempos deberias cambiar todo el diseño del script, ya que el sleep no serviria porque por ejemplo.
Hacemos el bucle principal y si los sleep que este tienen son superiores a lo que tarda AdlibRegister en llamar la otra funcion, estos se interrumpen...
EJEMPLO:
El Script arranca...
Registra la Funcion Adlib...(Esta funcion es ejecutada cada 1 segundo)
Arranca el bucle principal...
Debe hacer un sleep de 3 segundos....
Al segundo la funcion adlib es llamada... (El sleep del bucle principal se interrumpio)
Cuando termina la funcion adlib, vuelve el script a donde estaba, que era--- el primer sleep
empieza a esperar tres segundos... y denuevo se interrumpe al segundo por la funcion adlib...
Como ves seria imposible plantearla de esa manera, se podria usar adlibregister y con mesura y algo de cerebro creo que se podria hacer algo como lo que pedis... parece tan simple pero es el punto mas debil de autoit, que
no hace dos tareas a la vez. Hubo intentos de lograr esto pero son complicaciones mayores
Asi que me parece que la solucion va a ser
quemarte la cabeza un poco. Al menos que no me este super equivocando y no este viendo un carajo de nada... quiza otro miembro con mas experiencia te pueda aportar algo mejor, yo ya cante lo que sabia
Re: Ciclo
Publicado: 24 Jun 2011, 06:42
por Winer1
Bueno he encontradu una solucion muy buen rapida y simple sin romperme la cabeza
Aqui esl Codigo:
Código: Seleccionar todo
Global $Pausado = False
While Not $Pausado And WinExists("Tibia")
Sleep(4000)
Send ("{F1}")
Sleep(4000)
Send ("{F1}")
Sleep(4000)
Send ("{F1}")
Sleep(1000)
Send ("{F3}")
Sleep(77000)
Wend
Pero ahora como hacer que el ciclo siga su funcion sin que la ventana este actvia? ose abro en programa, inicio sesion y abro el scrip empisa a hacer lo que deve y pues do quiero hacer otra cosa pero no puedo porque a fuersas debe estar la ventana activa para que el scrip tenga el efecto requerido. como hacer que no nesesariamente la ventana esta activa para que la funcion tenga efecto en ella xD si esposible yo he agregado el:
While Not $Pausado And WinExists("Tibia")
pero al parecer no a surtido el efecto que deseaba.
Re: Ciclo
Publicado: 25 Jun 2011, 02:35
por ms999
EDITADO
Bueno habia escrito algo pero muy complicado, podes probar con el comando ControlSend() en vez de send, este envia teclas, pero hacia una ventana espesifica. Dime como te va con esto
Re: Ciclo
Publicado: 27 Jun 2011, 00:42
por Winer1
Ok.. Gracias pero como agregaria controlsend()
Re: Ciclo
Publicado: 27 Jun 2011, 00:52
por ms999
reemplazando send()
controlsend("Tibis","","{F1}")
Re: Ciclo
Publicado: 27 Jun 2011, 01:15
por Winer1
Tibis xD es tibia... pero amm bueno mira encotre esto
Código: Seleccionar todo
>>>> Window <<<<
Title: Tibia
Class: TibiaClient
Position: -8, -8
Size: 1296, 1040
Style: 0x15CF0000
ExStyle: 0x00000300
Handle: 0x0014032E
>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Name:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:
>>>> Mouse <<<<
Position: 517, -14
Cursor ID: 0
Color: 0xC7D5E3
ControlSend("[CLASS:Notepad]", "", "Edit1", "This is a line of text in the notepad window")
Como Tu Dices quedaria ControlSend("Tibia o TibiaClient", "", "", "{F3}") asi esta bien solo mi dada es seria Tibia o TibiaClient?
Re: Ciclo
Publicado: 27 Jun 2011, 01:24
por ms999
cualquiera de estas dos maneras...
Pero falta una cosa, fijate en el AutoIt Windows Info donde dice, "Basic Control Info", porque necesitas el control al cual va a mandar la tecla, busca eso y hace como el ejemplo de notepad, pero para tu programa.
Código: Seleccionar todo
ControlSend("[CLASS:TibiaClient]", "", <<<<Aca te falta la clase del control>>>>, "{F3}")
EDIT
Podes hacerlo sin el control, si no te aparece :) lo probe con el notepad!!
Re: Ciclo
Publicado: 27 Jun 2011, 01:26
por Winer1
y como saber eso?
Re: Ciclo
Publicado: 27 Jun 2011, 01:29
por ms999
Lee el edit, de mi anterior post. ;)
Re: Ciclo
Publicado: 27 Jun 2011, 01:33
por Winer1
como? un post tuyo o algo de aqui mismo?
Re: Ciclo
Publicado: 27 Jun 2011, 01:46
por ms999
emmmm lee este mensaje.
Luego lee el tuyo arriba de este.
Luego el mio arriba del tuyo arriba de este.
Luego el tuyo arriba del mio que esta arriba del tuyo que esta arriba de este.
Ahora lee el mio que esta arriba del tuyo arriba del mio que esta arriba del tuyo que esta arriba de este...
.... fijate en ese mensaje que dice "EDIT:" es porque lo edite yo
bueno si no entendiste lee denuebo todos los mensajes de hoy en este thread..
Re: Ciclo
Publicado: 27 Jun 2011, 01:55
por Winer1
a ya xD
Re: Ciclo
Publicado: 27 Jun 2011, 01:59
por Winer1
Esto es Genial Si Genial Gracias... Enserio...
Re: Ciclo
Publicado: 27 Jun 2011, 02:03
por ms999
deduzco por el script que estas haciendo te estas ahorrando muuuuucho trabajo. Una tecla cada 3 segundos!!!!
Re: Ciclo
Publicado: 27 Jun 2011, 02:10
por Winer1
pff tiempo no eso es lo que menos importa el problema es que no es de que este hace un rato hace unos dias lo use y tardo 2hrs en hacerlo 2hrs imaginate si lo hubiera hecho yo por mi cuenta hubiera durado como el doble xD
ademas que me permite andar por otros lados ver una peli.. o andar investigando otras cosa xD
Re: Ciclo
Publicado: 27 Jun 2011, 17:50
por ms999
bueno, pero cuando lo tengas terminado, dinos si funciono o no!!
Re: Ciclo
Publicado: 27 Jun 2011, 22:11
por Winer1
Si ha funcionado =D Muy bien jejeje