2010-09-03 3 views

Répondre

0

Par redirecting it et de lire le flux.

+6

-1: Le lien article s'exécute dans un problème de blocage (au moins, au moment de l'écriture de ce): Comme indiqué par la documentation MSDN: «Une situation de blocage se produit si le pr parent appels ocess p.StandardOutput.ReadToEnd suivi de p.StandardError.ReadToEnd et le processus enfant écrit suffisamment de texte pour remplir son flux d'erreurs ". – tstone2077

-1

Exemple de code est ci-dessous:

 ProcessStartInfo psi = new ProcessStartInfo(); 
     psi.CreateNoWindow = false; 
     psi.UseShellExecute = false; 
     psi.FileName = "C:\\my.exe"; 
     psi.WindowStyle = ProcessWindowStyle.Hidden; 
     psi.RedirectStandardOutput = true; 
     psi.RedirectStandardError = true; 

     using (Process exeProcess = Process.Start(psi)) 
     { 
      exeProcess.WaitForExit(); 

      var exitCode = exeProcess.ExitCode; 
      var output = exeProcess.StandardOutput.ReadToEnd(); 
      var error = exeProcess.StandardError.ReadToEnd(); 

      if (output.Length > 0) 
      { 
       // you have some output 
      } 


      if(error.Length > 0) 
      { 
       // you have some error details 
      } 
     } 
+1

Vous devez définir UseShellExecute sur true pour que le verbe soit respecté et il doit être défini sur 'false' pour rediriger la sortie standard. Vous ne pouvez pas faire les deux. Je suis à peu près certain que Windows ne vous permettra pas non plus de rediriger les entrées/sorties/erreurs standard dans les limites de sécurité admin/non-admin. Vous devrez trouver une manière différente d'obtenir la sortie du programme en cours d'exécution en tant qu'admin - Référence: http://stackoverflow.com/a/8690661 – Kiquenet

+5

-1. Comme indiqué par la documentation MSDN: "Une situation de blocage se produit si le processus parent appelle p.StandardOutput.ReadToEnd suivi de p.StandardError.ReadToEnd et que le processus enfant écrit suffisamment de texte pour remplir son flux d'erreurs". Votre code fait exactement cela. – tstone2077

Questions connexes