запуск процесса в C # - PullRequest
3 голосов
/ 09 июня 2010

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

Ответы [ 3 ]

2 голосов
/ 09 июня 2010

Вот хорошая статья о выполнении процесса синхронно и асинхронно из c #.

1 голос
/ 09 июня 2010

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

0 голосов
/ 09 июня 2010

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

...