Я хочу запустить процесс 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#.
- 1. C++ Выполнение внешнего процесса
- 2. Выполнение процесса супервизора в C
- 3. Выполнение процесса в фоновом режиме в c
- 4. Выполнение дочернего процесса перед родителем в C
- 5. Выполнение процесса обработки в Win Forms (C#)
- 6. Выполнение процесса в конкретном каталоге
- 7. Выполнение нового процесса в деструкторе
- 8. Удаленное выполнение процесса
- 9. Выполнение процесса внутри рабочего потока (C#)
- 10. Выполнение процесса не работает
- 11. Выполнение процесса Cygwin из .NET?
- 12. Выполнение процесса в системном контексте
- 13. Выполнение остановленного процесса в XV6
- 14. Выполнение асинхронного процесса в Activiti
- 15. Выполнение трехэтапного процесса в MVC
- 16. Выполнение процесса перехвата
- 17. Выполнение одновременного выполнения процесса
- 18. Angularjs выполнение индивидуального процесса
- 19. Выполнение .NET-процесса через
- 20. Выполнение процесса с правами администратора
- 21. Выполнение рабочего процесса из другого рабочего процесса
- 22. Выполнение одного процесса параллельно linux
- 23. Выполнение процесса демона на сервере
- 24. Выполнение отдельного процесса в родительском процессе
- 25. Выполнение Java и C# в рамках одного процесса?
- 26. Выполнение дочернего процесса в новом терминале
- 27. Выполнение отдельного процесса или потока в Qt
- 28. Выполнение процесса в фоновом режиме на сервере
- 29. activiti - Завершить выполнение экземпляра процесса
- 30. Выполнение основного процесса как child_process
Как именно процесс запрашивает ввод? –
позволяет взять пример c-компилятора. если я компилирую c-код программным путем через C#, везде, где есть инструкция scanf в c-коде, мое приложение должно предупредить пользователя о включении. и процесс должен продолжаться после ввода ввода. как я могу получить фактическое состояние запущенного процесса простыми словами, я хочу предоставить пользовательский интерфейс для запуска процесса cug. – rajshades