Question

Je veux lancer un processus programaticaly en c #. avec Process.Start je peux le faire. mais comment puis-je prommt lorsque le processus demande une entrée utilisateur entre les deux et continuer à nouveau après avoir fourni l'entrée.

Était-ce utile?

La solution

Il suffit d'écrire à Process.StandardInput .

Autres conseils

Voici un bon article sur l'exécution d'un processus synchrone et asynchrone de c #.

Vous pouvez ajouter un gestionnaire d'événements à l'événement OutputDataReceived. Cela est appelé à chaque fois que le processus écrit des données à son flux de sortie redirigé.

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
}

En outre, il est également un événement Process.Exited pour détecter si votre processus se termine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top