Pergunta

Eu quero executar uma programação de processo em C#. com process.start eu posso fazer isso. Mas como posso promover o usuário quando o processo solicita alguma entrada do usuário no meio e continuar novamente após o fornecimento da entrada.

Foi útil?

Solução

Apenas escreva para Process.StandardInput.

Outras dicas

Aqui está um bom artigo na execução de um processo de maneira síncrona e assíncrona a partir de C#.

Você pode adicionar um manipulador de eventos ao evento de saída do outputDatarece. Isso é chamado sempre que o processo grava alguns dados no seu fluxo de saída redirecionado.

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
}

Além disso, há também um processo. Execitado para detectar se o seu processo sai.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top