MsgBox Oculto / Command Echo.

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
xterix2
Mensajes: 8
Registrado: 10 Feb 2010, 15:52

MsgBox Oculto / Command Echo.

Mensaje por xterix2 »

Hola.

Lo primero presentarme, soy Tomás, lo mio es la administración de servidores, pero ahora a tocado escribir algo de codigo.

Mi consulta es: Necesito hace un echo de un error code que genera el codigo, la idea es que si se lanza desde windows no se vea nada, pero si se lanza desde un command se vea los resultados, ahora lo tengo con un:

Código: Seleccionar todo

MsgBox(0, "", $Result &  $errDesc & " Returncode:" & $notreadyforOk27)
pero no quiero que el usuario vea el report de errores, se que puedo montar un MsgBox con 1 segundo de timeout, pero haciendo así todavía se veria.

¿Podeis decirte que comando debo usar para realizar este echo $returncode?

Gracias por adelantado.
Un Saludl.
Avatar de Usuario
xterix2
Mensajes: 8
Registrado: 10 Feb 2010, 15:52

Re: MsgBox Oculto / Command Echo.

Mensaje por xterix2 »

Hola de nuevo.

De momento he utilizado lo siguiente:

Código: Seleccionar todo

MsgBox(0, "", $Result &  $errDesc & " Returncode:" & $notreadyforOk27,0,@SW_SHOWMINNOACTIVE)
Ahora revisare si Altiris lee los returncode
Un Saludo.
Avatar de Usuario
Nahuel
Hacker del Foro
Mensajes: 194
Registrado: 27 Jun 2007, 23:32
Ubicación: Argentina
Contactar:

Re: MsgBox Oculto / Command Echo.

Mensaje por Nahuel »

(Espero haber entendido bien)

Se me ocurren dos formas. Una, es que le pases parámetros a tu ejecutable usando la variable $CmdLine de AutoIt:

Código: Seleccionar todo

#include <array.au3>

If $CmdLine[0] = 0 Then Exit

If $CmdLine[1] = "echo" Then MsgBox(0,"...","...")
Es decir que si el programa se ejecuta sin parámetros no se ve nada, pero pasando el parámetro "echo" verías el MsgBox.

La otra forma es haciendo todo en modo consola (CUI en lugar de GUI). Yo hice un par de funciones sencillas que necesitan ser mejoradas pero que ayudan un poquito. Yo creo que es la mejor forma para lograr lo que querés:

Código: Seleccionar todo

#AutoIt3Wrapper_Change2CUI=y

$cmd=_ConsolaIniciar()
printf("\nESTE ES UN REPORTE DE ERROR\n - No hay errores a las " & @HOUR & ":" & @MIN & ":" & @SEC & "\n")
_ConsolaCerrar($cmd)


#Region -- FUNCIONES
Func _ConsolaIniciar()
	Return FileOpen("con",4)
EndFunc

Func _ConsolaCerrar($hwnd)
	FileClose($hwnd)
EndFunc

Func printf($sTexto)
	$sTexto=StringReplace($sTexto,"\n",@CRLF)
	ConsoleWrite($sTexto)
EndFunc

Func scanf($hwnd)
	Local $input=""
	While 1
		$chr=FileRead($hwnd,1)
		If $chr=@CR Then ExitLoop
		$input = $input & BinaryToString($chr)
	WEnd
	Return StringReplace($input,@CR,"")
EndFunc
#EndRegion
Así, el reporte lo verías dentro de la consola. Si el usuario ejecuta la aplicación desde el explorador, no tendría tiempo de verlo... (aún así aparece, no se me ocurrió una forma que no sea pasando parámetros para que no muestre absolutamente nada)
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: MsgBox Oculto / Command Echo.

Mensaje por Ximorro »

No hace falta hacer un CUI, si es un GUI igualmente puedes usar los comandos ConsoleWrite, que no abrirán ninguna ventana pero mandan el texto a la salida estándar (bueno, o a la de error con ConsoleWriteError)

Ejecutando en una consola no sirve porque como no es CUI el programa se descuelga de ella para no bloquearla, pero no es problema porque puedes ejecutarlo redireccionando a un archivo, por ejemplo:
c:\>miprograma.exe > salida.txt

Lanzará el programa con su GUI, pero los ConsoleWrite irán al archivo "salida.txt".

Un usuario que lo ejecute desde el entorno de Windows no notará nada, de hecho aunque lo ejecute desde una consola, si no pone la redirección tampoco podrá ver el log ;-)
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Nahuel
Hacker del Foro
Mensajes: 194
Registrado: 27 Jun 2007, 23:32
Ubicación: Argentina
Contactar:

Re: MsgBox Oculto / Command Echo.

Mensaje por Nahuel »

Ximorro, que bueno verte por acá de nuevo.

Eso es nuevo? Recuerdo una larga discusión en el foro inglés acerca de como escribir en el stdout y estaba claro que ConsoleWrite no era con esa finalidad.
En fin,gracias por aclarar!
Saludos.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Avatar de Usuario
xterix2
Mensajes: 8
Registrado: 10 Feb 2010, 15:52

Re: MsgBox Oculto / Command Echo.

Mensaje por xterix2 »

Muchas gracias a todos.

Al final solvente el output de una forma mucho más sencilla exit("código salida"), Altiris que es el software que lanza el script lee la salida y el mismo interpreta que significa bajo una lista pre confeccionada.

Aprovecho el post para que me indiquéis si sabéis como se hace para lanzar una aplicación y escuchar sus códigos de error.

De nuevo muchas gracias, así es un placer entrar en el mundo de la programación.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: MsgBox Oculto / Command Echo.

Mensaje por Ximorro »

¡Encantado Nahuel!

Nuevo no sé si es, simplemente lo he probado y así funciona, aún uso la versión 3.3.0.0

¡Que no es para eso! Pues la ayuda de ConsoleWrite es bien clara, empieza:
Writes data to the STDOUT stream...

No hace falta saber inglés para ver que escribe en el STDOUT...

Y efectivamente redireccionando la salida estándar desde la consola capturo la salida...

xterix2, lo de escuchar los códigos de error no sé muy bien lo que quieres decir, si está escribiendo en la salida de error estándar siempre puedes intentar capturar STDERR a ver si salen por ahí...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Nahuel
Hacker del Foro
Mensajes: 194
Registrado: 27 Jun 2007, 23:32
Ubicación: Argentina
Contactar:

Re: MsgBox Oculto / Command Echo.

Mensaje por Nahuel »

Pues es bueno saberlo, gracias. Indudablemente estoy confundido con otra cosa.

Saludos.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Avatar de Usuario
xterix2
Mensajes: 8
Registrado: 10 Feb 2010, 15:52

Re: MsgBox Oculto / Command Echo.

Mensaje por xterix2 »

Hola.

Ya encontre lo que buscaba.

Para "escuchar" los codigos de error de aplicaciones que lanzas se utiliza:

Código: Seleccionar todo

$exitCode_off = RunWait("Applicacation")
msgbox(0,"error",$exitCode_off)

Un Saludo.
Responder