Generar un log.

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
rparada
Mensajes: 5
Registrado: 12 Abr 2010, 13:46

Generar un log.

Mensaje por rparada »

Hola:

Os cuento mi caso y haber que se os ocurre.


Tengo una aplicacion para controlar un error en un programa de windows, cuando falla, lo cierra y lo vuelve a lanzar.

Necesitaba que mientras espera el error mi programa de AutoIt cada cierto tiempo escriba una linea de registro en un fichero. Para comprobar que la aplicacion de AutoIt no esta pausada, colgada o cerrada.

¿Se puede hacer eso?

Os dejo el codigo de mi aplicacion:

Código: Seleccionar todo

; Script Start - Add your code below here

$contador = "0"

Run("c:\MIPCOM2001\MIPCOM_COMO_PRIMARIO_COM1\Mipcom1.exe")
;EJECUTO LA APLICACION

Sleep (10000)
;ESPERO 10 SEGUNDOS A QUE ARRANQUE

WinWait("Mipcom2001", "COM 1")
WinActivate("Mipcom2001", "COM 1")
ControlClick("Mipcom2001", "COM 1","Button1","Left")
;ESPERO A QUE APAREZA LA VENTANA Y PULSO EL "BUTTON1" QUE HACE QUE SE OCULTE LA APLICACION EN EL TRAY

While $contador = "0"

	WinWait("Mipcom1.exe", "Informe a Microsoft de este problema")
	WinActivate("Mipcom1.exe", "Informe a Microsoft de este problema")
	ControlClick("Mipcom1.exe", "Informe a Microsoft de este problema","Button1","Left")
        ;ESPERO LA VENTANA DE ERROR, LE DOY AL BUTTON1 "ACEPTAR", SE CIERRA LA APLICACION

	Sleep (5000)
        ;ESPERO 5 SEGUNDOS A QUE SE CIERRE.

	Run("pskill mipcom1.exe")
        ;MATO EL PROCESO POR SI NO SE HA CERRADO.

	Sleep (5000)
        ;ESPERO 5 SEGUNDOS A QUE MATE EL PROCESO.

	Run("c:\MIPCOM2001\MIPCOM_COMO_PRIMARIO_COM1\Mipcom1.exe")
        ;EJECUTO LA APLICACION	

	Sleep (10000)
        ;ESPERO 10 SEGUNDOS A QUE INICIE LA APLICACION
	
	WinWait("Mipcom2001", "COM 1")
	WinActivate("Mipcom2001", "COM 1")
	ControlClick("Mipcom2001", "COM 1","Button1","Left")
         ;ESPERO A QUE APAREZA LA VENTANA Y PULSO EL "BUTTON1" QUE HACE QUE SE OCULTE LA APLICACION EN EL TRAY

;Y VUELTA A EMPEZAR, HA ESPERAR EL ERROR.

WEnd

Exit


Gracias.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Generar un log.

Mensaje por BasicOs »

Bienvenida rparada,
marcando code puedes enmarcar el código, si lo deseas.

Solo tienes que usar una función que como siempre en autoit te lo simplifica todo
_FileWriteLog() te escribe en el fichero my.log el texto que lo desees. Puedes situarlo donde quieras en tu programa, incluso puedes tener varios logs con ficheros diferentes o con el mismo, si cambias el texto que escriba.

Código: Seleccionar todo

#include <file.au3>
;
_FileWriteLog(@ScriptDir & "\my.log","El programa sigue encendido dentro del while y "&$unavarialbe)
;
Si lo deseas puedes publicar tu programa dentro del apartado de Scripts o programas de los usuarios, porque seguramente el caso tuyo no es único sino que suele pasar que se cuelguen, salgan o bloqueen programas, incluso puedes testear con ProcessExists( "notepad.exe" ) si existe el proceso en memoria..
Salu22:)
rparada
Mensajes: 5
Registrado: 12 Abr 2010, 13:46

Re: Generar un log.

Mensaje por rparada »

Muchisimas gracias....

No sabes el favor que me acabas de hacer.


Ahora otra consulta, para simplificar el programa.

Como puedo hacer para que mi programa de AutoIt espere por 3 posibles ventanas:
WinWait("Mipcom1.exe", "Informe a Microsoft de este problema")
WinWait("Mipcom2.exe", "Informe a Microsoft de este problema")
WinWait("Mipcom3.exe", "Informe a Microsoft de este problema")

Lo he resuelto creando 3 programas de AutoIt cada uno vigilando una ventana ¿se puede simplificar a un solo programa?

Gracias de nuevo.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Generar un log.

Mensaje por BasicOs »

Puedes añadir la opción de tiempo y revisar todas las ventanas que quieras en un bucle, o alternativamente puedes hacer lo mismo con WinExists().

Código: Seleccionar todo

While 1
sleep(100)
  If WinExists("Mipcom1.exe") Then    MsgBox(0, "", "Window 1 existe")
  If WinExists("Mipcom2.exe") Then    MsgBox(0, "", "Window 2 existe")
  If WinExists("Mipcom3.exe") Then    MsgBox(0, "", "Window 3 existe")
Wend
Con WinWait

Código: Seleccionar todo

$tiempo=1 ;1 segundo
While 1
if  WinWait("1","",$tiempo) <>0 then MsgBox(0, "", "Window 1existe")
If   WinWait("2","",$tiempo) <>0 then MsgBox(0, "", "Window 2 existe")
If  WinWait("3","",$tiempo) <>0 then MsgBox(0, "", "Window 3 existe")
Wend
Salu22:)
rparada
Mensajes: 5
Registrado: 12 Abr 2010, 13:46

Re: Generar un log.

Mensaje por rparada »

Perfecto.


Muchas gracias de nuevo.
Responder