Ciclo

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Ciclo

Mensaje 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.
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje 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.

Código: Seleccionar todo

While true
;...codigo....
Wend
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
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje 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.
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje 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 :smt012
Asi que me parece que la solucion va a ser :smt013 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 :smt034
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

Bueno he encontradu una solucion muy buen rapida y simple sin romperme la cabeza :smt041

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. :smt022
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje 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
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

Ok.. Gracias pero como agregaria controlsend()
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje por ms999 »

reemplazando send()
controlsend("Tibis","","{F1}")
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje 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?
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje por ms999 »

cualquiera de estas dos maneras...

Código: Seleccionar todo

"[CLASS:TibiaClient]"
"Tibia"
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!!

Código: Seleccionar todo

ControlSend("[CLASS:TibiaClient]", "", "", "{F3}")
Última edición por ms999 el 27 Jun 2011, 01:27, editado 1 vez en total.
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

y como saber eso?
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje por ms999 »

Lee el edit, de mi anterior post. ;)
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

como? un post tuyo o algo de aqui mismo?
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje por ms999 »

:smt012 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..
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

a ya xD
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

Esto es Genial Si Genial Gracias... Enserio...
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje por ms999 »

deduzco por el script que estas haciendo te estas ahorrando muuuuucho trabajo. Una tecla cada 3 segundos!!!! :smt046
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje 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
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: Ciclo

Mensaje por ms999 »

bueno, pero cuando lo tengas terminado, dinos si funciono o no!!
Winer1
Mensajes: 26
Registrado: 20 Jun 2011, 21:32

Re: Ciclo

Mensaje por Winer1 »

Si ha funcionado =D Muy bien jejeje :smt026 :smt041
Responder