Запуск процесса в C#
Я хочу запустить процесс программно в C#. с process.start я могу это сделать. но как я могу предложить пользователю, когда процесс запрашивает некоторый пользовательский ввод между и продолжить снова после предоставления ввода.
3 ответа
Решение
Вот хорошая статья о выполнении процесса синхронно и асинхронно из C#.
Вы можете добавить обработчик события в событие OutputDataReceived. Это вызывается всякий раз, когда процесс записывает некоторые данные в свой перенаправленный поток вывода.
private StreamWriter m_Writer;
public void RunProcess(string filename, string arguments)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = filename;
psi.Arguments = arguments;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
Process process = Process.Start(psi);
m_Writer = process.StandardInput;
process.EnableRaisingEvents = true;
process.OutputDataReceived += new DataReceivedEventHandler(OnOutputDataReceived);
process.BeginOutputReadLine();
}
protected void OnOutputDataReceived(object sender, DataReceivedEventArgs e)
{
// Data Received From Application Here
// The data is in e.Data
// You can prompt the user and write any response to m_Writer to send
// The text back to the appication
}
Кроме того, существует также событие Process.Exited для определения выхода из вашего процесса.