La redirection de l'entrée standard de l'application de la console
J'ai une application console qui je suis en train d'automatiser en redirigeant le flux d'entrée Standard du processus. En mode manuel après l'ouverture de l'application, il attend une entrée de l'utilisateur comme ci-dessous,
J'ai créé le processus avec redirigé flux d'entrée Standard.L'extrait de code est comme suit,
Process newProcess = new Process();
newProcess.StartInfo.FileName = exeName;
newProcess.StartInfo.Arguments = argsLine;
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.RedirectStandardOutput = false ;
newProcess.StartInfo.CreateNoWindow = false;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.Start();
Mais le processus de création comme cela donne une boucle infinie indiqué ci-dessous,
C'est comme si je l'envoi Enter
touche de commande sans cesse les processus de flux d'entrée. Quelqu'un peut-il m'indiquer ce que je fais de mal?
De même, les flux de sortie standard de redirection est également pas de travail après avoir fait
newProcess.StartInfo.RedirectStandardOutput = true
Mais je peux gérer avec qui.
Ne redirection de flux standard de travail avec toutes les applications de console ou est-il une exception?
- Quel est le code dans une boucle?
- Je n'ai pas le code de l'application console. C'est un outil tiers.
- Veuillez ne pas inclure de l'information sur un langage utilisé dans une question de propriété, à moins que ça n'aurait pas de sens sans elle. Tags servir à cette fin.
Vous devez vous connecter pour publier un commentaire.
Ici est une classe que j'ai écrit afin de gérer ce genre de choses. N'hésitez pas à utiliser. Son but est de lancer une application de console et de "parler" pour le. Il a la capacité de recevoir de sortie ainsi. Bonne chance.
var cam = new ConsoleAppManager("sudo"); cam.ExecuteAsync("apt install vim"); while (cam.Running) Thread.Sleep(1000);
mais il ne fonctionne pas (il se bloque), suis-je raté quelque chose?À la suite de la réponse précédente, je vais juste ajouter l'extension de la méthode de SubArray, juste au cas où ajouter cette classe à votre code où il n'est pas imbriquée à l'intérieur d'une catégorie quelconque ( le code n'a pas l'air lisible dans un commentaire, donc je l'ai ajouté ici )