ShellExecuteWait con tiempo máximo.
ShellExecuteWait con tiempo máximo.
Hola de nuevos a todos.
Ando lanzando un proceso que si todo va bien finaliza en 30 segundos y no quiero continuar el script hasta que este punto este finalizado, había probado el comando ShellExecuteWait, pero si es proceso no va bien no se auto cierra por lo que es script no sigue.
Entiendo que podría lanzar un ShellExecute y en la siguiente línea poner un processclose(process, time), pero me gustaría que el script continúe cuando el proceso finalice o darle un time-out máximo de dos minutos.
¿Me podéis dar alguna pista de cómo hacerlo?
Gracias.
Ando lanzando un proceso que si todo va bien finaliza en 30 segundos y no quiero continuar el script hasta que este punto este finalizado, había probado el comando ShellExecuteWait, pero si es proceso no va bien no se auto cierra por lo que es script no sigue.
Entiendo que podría lanzar un ShellExecute y en la siguiente línea poner un processclose(process, time), pero me gustaría que el script continúe cuando el proceso finalice o darle un time-out máximo de dos minutos.
¿Me podéis dar alguna pista de cómo hacerlo?
Gracias.
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: ShellExecuteWait con tiempo máximo.
Creo que lo has explicado muy bien. Pero si puedes postear tu código.
O poner un ejemplo de lo que quieres en autoit (o al menos con pseudocodigo+autoit),
Salu2:)
O poner un ejemplo de lo que quieres en autoit (o al menos con pseudocodigo+autoit),
Salu2:)
Re: ShellExecuteWait con tiempo máximo.
Hola.
De momento lo he resuelto con ejecución + espera + matar proceso.
El código actual es:
Cuando lo que me gustaría es:
con un time out de 120 segundos.
Con el ello la ejecucción duraría el tiempo de proceso de altirisagentbooster.exe y en caso de que el proceso no haya acabado en 120 segundos matarlo.
A ver si me dais una idea de como hacerlo.
Gracias.
De momento lo he resuelto con ejecución + espera + matar proceso.
El código actual es:
Código: Seleccionar todo
$error_code_altiris_post = ShellExecute(@WindowsDir&"\AltirisAgentBooster.exe","/server:xxxx.xxx.xxx /silent /noactivitytimer:0 /skipinstallagent /addcollectionguids:xxxxxxxx)
sleep(120000)
ProcessClose("AltirisAgentBooster.exe")
Código: Seleccionar todo
ShellExecuteWAIT(@WindowsDir&"\AltirisAgentBooster.exe","/server:xxxx.xxx.xxx /silent /noactivitytimer:0 /skipinstallagent /addcollectionguids:xxxxxxxx)
Con el ello la ejecucción duraría el tiempo de proceso de altirisagentbooster.exe y en caso de que el proceso no haya acabado en 120 segundos matarlo.
A ver si me dais una idea de como hacerlo.
Gracias.
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: ShellExecuteWait con tiempo máximo.
El código que hiciste ya hace lo que deseas, no?
Parece que lo que buscas puede ser algo como:
Run se usa más para los exe, y shellexecute() abrir ficheros con extensiones registradas con un open,edit etc...
devuelve 0 si la espera llegó hasta los 120 segundos.
Salu2:)
Parece que lo que buscas puede ser algo como:
Código: Seleccionar todo
Run()-->el programa.exe
$valordeRetorno=ProcessWaitClose("miprograma.exe",120)
devuelve 0 si la espera llegó hasta los 120 segundos.
Salu2:)
Re: ShellExecuteWait con tiempo máximo.
Hola.
Gracias por el apunte BasicOs, cambiare el script para utilizar el Run.
Realmente hace a medias lo que quiero, deseo que si el proceso se ejecuta en menos de 120 segundos siga el script, en caso de llegar a los 120 segundos o el tiempo estipulado mate el proceso para poder continuar.
La solución aplicada es siempre esperar los 120 segundos, efectiva, pero no del todo elegante.
Gracias, Un Saludo.
Gracias por el apunte BasicOs, cambiare el script para utilizar el Run.
Realmente hace a medias lo que quiero, deseo que si el proceso se ejecuta en menos de 120 segundos siga el script, en caso de llegar a los 120 segundos o el tiempo estipulado mate el proceso para poder continuar.
La solución aplicada es siempre esperar los 120 segundos, efectiva, pero no del todo elegante.
Gracias, Un Saludo.
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: ShellExecuteWait con tiempo máximo.
Justo eso que quieres es lo que se hace con el ProcessWaitClose que te ha puesto XPyro.
Esa función se espera a que finalice el programa o a que pase el tiempo especificado (120segs), lo que ocurra antes.
A parte del control de errore, si devuelve 1 ha terminado antes del tiempo, si devuelve 0 es que ha llegado al límite de tiempo (y entonces si quieres puedes matarlo).
Esa función se espera a que finalice el programa o a que pase el tiempo especificado (120segs), lo que ocurra antes.
A parte del control de errore, si devuelve 1 ha terminado antes del tiempo, si devuelve 0 es que ha llegado al límite de tiempo (y entonces si quieres puedes matarlo).
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)