none
Obtener resultados de ejecución de otra aplicación. RRS feed

  • Pregunta

  • Hola a todos; necesito ejecutar una aplicación desde un Form y obtener los resultados de la misma para poder mostrarlos en un textbox(Form). La ejecucución de la aplicación la hice con ShellExecute, ShellExecuteEx y Process, pero en ninguna de las mismas puedo obtener los resultados de esa aplicación. La aplicación (de la que quiero obtener los resultados) es un ejecutable que se dispara desde consola. Resumiendo: tengo un Form que tiene un botón que lanza una aplicación y no tengo formas de ver que es lo que esta pasando con la aplicación (lanzada desde Form). Mi idea es poder ver lo que en un textbox el resultado de lanzar la aplicación.  

    La aplicación que quiero observar tiene una salida como la siguiente:


    C:\Documents and Settings\Notebook>avrdude
    Usage: avrdude [options]
    Options:
      -p <partno>                Required. Specify AVR device.
      -b <baudrate>              Override RS-232 baud rate.
      -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
      -C <config-file>           Specify location of configuration file.
      -c <programmer>            Specify programmer type.
      -D                         Disable auto erase for flash memory
      -i <delay>                 ISP Clock Delay [in microseconds]
      -P <port>                  Specify connection port.
      -F                         Override invalid signature check.
      -e                         Perform a chip erase.
      -O                         Perform RC oscillator calibration (see AVR053).
      -U <memtype>:r|w|v:<filename>[:format]
                                 Memory operation specification.
                                 Multiple -U options are allowed, each request
                                 is performed in the order specified.
      -n                         Do not write anything to the device.
      -V                         Do not verify.
      -u                         Disable safemode, default when running from a script.
      -s                         Silent safemode operation, will not ask you if
                                 fuses should be changed back.
      -t                         Enter terminal mode.
      -E <exitspec>[,<exitspec>] List programmer exit specifications.
      -y                         Count # erase cycles in EEPROM.
      -Y <number>                Initialize erase cycle # in EEPROM.
      -v                         Verbose output. -v -v for more.
      -q                         Quell progress output. -q -q for less.
      -?                         Display this usage.

    avrdude project: <URL:http://savannah.nongnu.org/projects/avrdude>

    y esto es lo que quiero ver en mi textbox
    miércoles, 10 de febrero de 2010 14:59

Todas las respuestas

  • Se entiende lo que intento hacer?
    viernes, 12 de febrero de 2010 12:17
  • Si quieres ver el resutado FINAL de la aplicación lanzada, en vez de lanzar la aplicación te creas sobre la marcha un fichero BAT con la siguiente linea:

    AplicaciónALanzar Opciones > FicheroTemporal

    y lanzas el BAT. Cuando acabe el BAT, sólo tienes que mostrar el FicheroTemporal en el texbox y borrar el fichero temporal y el BAT

    Si quieres mas 'elegancia' y la AplicaciónALanzar la has creado tú, añadele una opción para que puedas indicarle el nombre del fichero temporal y te ahorraras el crear el BAT

    Si quieres ver como la aplicación va trabajando y la AplicaciónALanzar la has hecho tú, no te queda más remedio que  estudiar la comunicación entre aplicaciones:

    http://msdn.microsoft.com/en-us/library/aa365799(VS.85).aspx

    suerte.
    sábado, 13 de febrero de 2010 6:40
  • Aparte de la respuesta de Bartomeu, también puedes capturar (redireccionar) la salida de la consola a tu aplicación mediante la suscripción a una serie de eventos.

    Aquí tienes un ejemplo: http://stackoverflow.com/questions/415620/redirect-console-output-to-textbox-in-separate-program-c

    Aunque está en C# es trival convertirlo a C++/CLI.


    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    lunes, 15 de febrero de 2010 11:26
    Moderador