Frage

Ich möchte einen Prozess programaticaly in c # laufen. mit Process.Start ich kann es tun. aber wie kann ich Benutzer prommt, wenn der Prozess für einige Benutzereingabe fragt dazwischen und weiter wieder nach der Eingabe bereitstellt.

War es hilfreich?

Lösung

Schreiben Sie einfach an Process.StandardInput .

Andere Tipps

Hier ist ein guter Artikel auf einen Prozess synchron ausgeführt wird und asynchron von c #.

Sie können einen Event-Handler zum OutputDataReceived Ereignisse hinzuzufügen. Dies wird aufgerufen, wenn der Prozess einige Daten zu seiner umgeleiteten Ausgabe-Stream schreibt.

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
}

Darüber hinaus gibt es auch ein Process.Exited Ereignis, wenn der Prozess Exits zu erkennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top