Página 1 de 1

MsgBox Oculto / Command Echo.

Publicado: 10 Feb 2010, 16:07
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.

Re: MsgBox Oculto / Command Echo.

Publicado: 10 Feb 2010, 17:00
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.

Re: MsgBox Oculto / Command Echo.

Publicado: 10 Feb 2010, 17:10
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)

Re: MsgBox Oculto / Command Echo.

Publicado: 26 Feb 2010, 15:16
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 ;-)

Re: MsgBox Oculto / Command Echo.

Publicado: 27 Feb 2010, 14:05
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.

Re: MsgBox Oculto / Command Echo.

Publicado: 27 Feb 2010, 23:09
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.

Re: MsgBox Oculto / Command Echo.

Publicado: 01 Mar 2010, 11:02
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í...

Re: MsgBox Oculto / Command Echo.

Publicado: 01 Mar 2010, 15:41
por Nahuel
Pues es bueno saberlo, gracias. Indudablemente estoy confundido con otra cosa.

Saludos.

Re: MsgBox Oculto / Command Echo.

Publicado: 03 Mar 2010, 20:45
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.