Detener todo lo que la aplicación esté haciendo

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
joanfran55
Mensajes: 16
Registrado: 09 Mar 2009, 02:10

Detener todo lo que la aplicación esté haciendo

Mensaje por joanfran55 »

Hola a todos.
Debe ser una chorrada, pero estoy haciendo un programa para automatizar descargas, el cual debe hacer muchas descargas seguidas de archivos de 200 kilobytes. Nada, todo está claro:

Código: Seleccionar todo


While $i < $number  

        

    $i = $i + 1

$String7=$var & $Stringbarra & $name & $Stringbarra & $name & $String3 & $String4 & $String5

$String6=$line & $name & $String3 & $String4 & $String5



InetGet($String6, $String7)

WEnd

 
Bueno, el caso es que va fenomenal, los archivos se descargan y funcionan perfectamente, pero mi pregunta, y lo que no he podido hacer es:

Parar de descargar ANTES de terminar el While si el usuario aprieta el botón "parar descarga"

Mi idea fue esta:

Código: Seleccionar todo


While $i < $number And $Gmsg <> $Button1  

        

    $i = $i + 1

$String7=$var & $Stringbarra & $name & $Stringbarra & $name & $String3 & $String4 & $String5

$String6=$line & $name & $String3 & $String4 & $String5



InetGet($String6, $String7)

WEnd

 
Siendo $Gmsg el setstate del menu y button1 un botón que le he puesto y que aparece.

Pues nada, el boton aparece, pero por más que le doy, no se paran las descargas.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Detener todo lo que la aplicación esté haciendo

Mensaje por Ximorro »

No se puede parar así porque el código está bloqueado en InetGet mientras está descargando. No tengo muy clara la gestión del mensaje del botón pero en cualquier caso sólo funcionaría si aprietas justo cuando acaba de descargar un archivo y va a pasar al suguiente, prácticamente eso lo hace en tiempo cero así que es prácticamente imposible.

¿Funcionará un hotkey mientras está descargando? En vez de un botón prueba a poner un hotkey que aborte el programa, a ver si InetGet no lo bloquea.
La alternativa es poner InetGet en segundo plano, eso quiere decir que el programa se sigue ejecutando mientras descarga, no creas que es tan chollo porque sólamente una descarga puede estar activa, con lo que hay que estar controlando cuánto dura para no lanzar otra, aunque mientras haces eso también puedes estar comprobando el botón y entonces cancelar la descarga.

Prueba a ver si funciona el hotkey que si eso va será más fácil. Si hay que hacerlo de la segunda manera las claves son
InetGet("URL","nombrefichero", default, 1) El 1 es lo que activa descarga en segundo plano
@InetGetActive, que te dice si aún está descargando
InetGet("abort"), que aborta un InetGet en segundo plano.

Con eso puedes hacerlo, si no va lo del hotkey y no te aclaras lo dices e investigamos cómo hay que montarlo...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
joanfran55
Mensajes: 16
Registrado: 09 Mar 2009, 02:10

Re: Detener todo lo que la aplicación esté haciendo

Mensaje por joanfran55 »

Muchas gracias por la respuesta, Ximorro, pero era mucho más fácil:

Código: Seleccionar todo

While $i < $number 

$nMsg=GUIGetMsg()

    If $nMsg = $Button5 Then

        ExitLoop

       Else



    $i = $i + 1



$String7=$var & $Stringbarra & $name & $Stringbarra & $name & $String3 & $String4 & $String5



$String6=$line & $name & $String3 & $String4 & $String5







InetGet($String6, $String7)

  EndIf

WEnd
Terminaría de descargarse el archivo que se está descargando, sí, pero una vez termine ya no continuará descargando el resto de archivos. lo he probado varias veces y parece ser que funciona.

Muchas gracias
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Detener todo lo que la aplicación esté haciendo

Mensaje por Ximorro »

Ya decía yo que no tenía clara la gestión del mensaje del botón, tenías que haber puesto todo el código al principio.

Ah, entonces aunque esté bloqueado en InetGet parece que GuiGetMsg almacena los eventos y te los da luego. ¡Pues me alegro!
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder