Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

TRUCO: Cómo lanzar un proceso y recoger los resultados de su ejecución

Lanzar

Hay ocasiones en las que es necesario poder lanzar un programa de línea de comandos (o no) de modo silencioso para realizar una tarea y luego recoger de algún modo el resultado de su ejecución. Un caso típico es el envío de archivos por FTP.

FTP.exe es un ejecutable muy útil que viene con Windows y que permite enviar órdenes a un servidor de archivos mediante un archivo de comandos que se le pasa como parámetro.

La siguiente función sirve para ejecutar cualquier programa con su ventana (de haberla) oculta, devolviendo el resultado de la ejecución en una cadena (normalmente lo que aparecería en la línea de comandos):

//Lanza un proceso con su ventana oculta y devuelve el resultado
private static string lanzaProceso(string Proceso, string Parametros)
{
   ProcessStartInfo startInfo = new ProcessStartInfo(Proceso, Parametros);
   startInfo.WindowStyle = ProcessWindowStyle.Hidden;
   startInfo.UseShellExecute = false; //No utiliza RunDLL32 para lanzarlo
//Opcional: establecer la carpeta de trabajo en la que se ejecutará el proceso
//startInfo.WorkingDirectory = "C:\\MiCarpeta\\"; //Redirige las salidas y los errores startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; Process proc = Process.Start(startInfo); //Ejecuta el proceso proc.WaitForExit(); // Espera a que termine el proceso string error = proc.StandardError.ReadToEnd(); if (error != null && error != "") //Error throw new Exception("Se ha producido un error al ejecutar el proceso '" + Proceso + "'\n" + "Detalles:\n" + "Error: " + error); else //Éxito return proc.StandardOutput.ReadToEnd(); //Devuelve el resultado }

Si se produce un error se lanza una excepción que recoge los detalles enviados por el programa a la línea de comandos. Puede resultar muy útil. Es necesario incluir System.Diagnostics.

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (2) -

Alejandra moya
Alejandra moya

Y si quiero que se muestre la pantalla de Shell durante la ejecución, qué comando debería utilizar!?

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Alejandra:

Si le echas un vistazo al código verás que hay una línea bastante reveladora que dice:

startInfo.WindowStyle = ProcessWindowStyle.Hidden;

Si la comentas se muestra la ventana.

También puedes hacer que salga maximizada (ProcessWindowStyle.Maximized), minimizada (ProcessWindowStyle.minimized) o simplemente "normal" que es lo mismo que no poner nada/comentar la línea (maximizada (ProcessWindowStyle.Normal).

Saludos.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.