2010-06-09 4 views
3

Я хочу запустить процесс programaticaly в C#. с process.start я могу это сделать. но как я могу объявить пользователя, когда процесс запрашивает некоторый ввод пользователя между ними и продолжит работу после предоставления ввода.Выполнение процесса в C#

+0

Как именно процесс запрашивает ввод? –

+0

позволяет взять пример c-компилятора. если я компилирую c-код программным путем через C#, везде, где есть инструкция scanf в c-коде, мое приложение должно предупредить пользователя о включении. и процесс должен продолжаться после ввода ввода. как я могу получить фактическое состояние запущенного процесса простыми словами, я хочу предоставить пользовательский интерфейс для запуска процесса cug. – rajshades

ответ

1

Просто напишите Process.StandardInput.

+0

Обратите внимание, что вам необходимо установить для параметра ProcessStartInfo.UseShellExecute значение false, и вы должны установить для параметра ProcessStartInfo.RedirectStandardInput значение true. В противном случае запись в поток StandardInput генерирует исключение. –

+0

@John Buchanan: Спасибо за то, что он точно повторил (фактически копируя) то, что он говорит по ссылке, которую я предоставил ... – leppie

0

Вы можете добавить обработчик события в событие 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 обнаружить если ваш процесс завершается.

Смежные вопросы