Communiquez avec les autres et partagez vos connaissances professionnelles

Inscrivez-vous ou connectez-vous pour rejoindre votre communauté professionnelle.

Suivre

Why is Process.StandardInput.WriteLine not supplying input to my process?

This question was asked on StackOverflow but none of the answers are working. The StreamWriter Flushes the input and carpos private field is set to zero but the BaseStream carpos is still stuck at the length of the buffer. None of the input was passed to the process.

Any ideas of why or how to work around this? I used dotnet framework4.7.1 and also tried it on4.5.2

user-image
Question ajoutée par Utilisateur supprimé
Date de publication: 2018/03/13

I got it to work :)

 

Process _process;

StreamWriter _inputWriter;

 

void Main()

{

_process = new Process

{

EnableRaisingEvents = true,

StartInfo = new ProcessStartInfo

{

FileName = "cmd.exe",

Arguments = string.Empty,

UseShellExecute = false,

CreateNoWindow = true,

WindowStyle = ProcessWindowStyle.Hidden,

WorkingDirectory = Directory.GetCurrentDirectory(),

StandardOutputEncoding = Encoding.UTF8,

StandardErrorEncoding = Encoding.UTF8,

RedirectStandardInput = true,

RedirectStandardOutput = true,

RedirectStandardError = true

}

};

 

_process.OutputDataReceived += (s, e) => // instead of using a background worker

{

if (e.Data == null) return;

Console.WriteLine(e.Data);

};

 

Console.WriteLine("Starting...");

if (!_process.Start()) return;

_process.BeginOutputReadLine(); // <- using BeginOutputReadLine

_inputWriter = _process.StandardInput;

_inputWriter.AutoFlush = true;

_inputWriter.WriteLine(); // <- my little trick here

 

string input = Util.ReadLine<string> ("Enter command:"); // using LINQPad, replace it with Console.ReadLine();

if (!string.IsNullOrEmpty(input)) _inputWriter.WriteLine(input);

_process.WaitForExit(5000);

_process.Kill();

Console.WriteLine("Done");

}

 

void OnOutput(string data)

{

Console.WriteLine(data);

}

 

More Questions Like This

Avez-vous besoin d'aide pour créer un CV ayant les mots-clés recherchés par les employeurs?