(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!