397 votes

Process.start : comment obtenir la sortie ?

Je voudrais exécuter un programme externe en ligne de commande à partir de mon application Mono/.NET. Par exemple, je voudrais exécuter mencoder . C'est possible :

  1. Pour obtenir la sortie du shell de la ligne de commande et l'écrire dans ma zone de texte ?
  2. Pour obtenir la valeur numérique afin d'afficher une barre de progression avec le temps écoulé ?

1voto

La solution qui a fonctionné pour moi sous win et linux est la suivante

// GET api/values
        [HttpGet("cifrado/{xml}")]
        public ActionResult<IEnumerable<string>> Cifrado(String xml)
        {
            String nombreXML = DateTime.Now.ToString("ddMMyyyyhhmmss").ToString();
            String archivo = "/app/files/"+nombreXML + ".XML";
            String comando = " --armor --recipient bibankingprd@bi.com.gt  --encrypt " + archivo;
            try{
                System.IO.File.WriteAllText(archivo, xml);                
                //String comando = "C:\\GnuPG\\bin\\gpg.exe --recipient licorera@local.com --armor --encrypt C:\\Users\\Administrador\\Documents\\pruebas\\nuevo.xml ";
                ProcessStartInfo startInfo = new ProcessStartInfo() {FileName = "/usr/bin/gpg",  Arguments = comando }; 
                Process proc = new Process() { StartInfo = startInfo, };
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.RedirectStandardError = true;
                proc.Start();
                proc.WaitForExit();
                Console.WriteLine(proc.StandardOutput.ReadToEnd());
                return new string[] { "Archivo encriptado", archivo + " - "+ comando};
            }catch (Exception exception){
                return new string[] { archivo, "exception: "+exception.ToString() + " - "+ comando };
            }
        }

0 votes

Les exceptions attrapées par catch(Exception) général doivent être ré-attrapées, sinon il avale l'exception qui peut être attendue par le code "supérieur". Dans l'exemple donné, le débogueur ne s'arrêtera pas sur une exception si elle s'est produite à l'intérieur de try bloc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X