Я хочу запустить процесс programaticaly в C#. с process.start я могу это сделать. но как я могу объявить пользователя, когда процесс запрашивает некоторый ввод пользователя между ними и продолжит работу после предоставления ввода.Выполнение процесса в C#
ответ
Просто напишите Process.StandardInput.
Обратите внимание, что вам необходимо установить для параметра ProcessStartInfo.UseShellExecute значение false, и вы должны установить для параметра ProcessStartInfo.RedirectStandardInput значение true. В противном случае запись в поток StandardInput генерирует исключение. –
@John Buchanan: Спасибо за то, что он точно повторил (фактически копируя) то, что он говорит по ссылке, которую я предоставил ... – leppie
Вы можете добавить обработчик события в событие 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 обнаружить если ваш процесс завершается.
Here is a good article Выполнение процесса синхронно и асинхронно с C#.
Как именно процесс запрашивает ввод? –
позволяет взять пример c-компилятора. если я компилирую c-код программным путем через C#, везде, где есть инструкция scanf в c-коде, мое приложение должно предупредить пользователя о включении. и процесс должен продолжаться после ввода ввода. как я могу получить фактическое состояние запущенного процесса простыми словами, я хочу предоставить пользовательский интерфейс для запуска процесса cug. – rajshades