سؤال

أريد تشغيل عملية برمجية في C#. مع Process.start يمكنني القيام بذلك. ولكن كيف يمكنني prommt user عندما تسأل العملية عن بعض إدخال المستخدم بين ما بين ومتابعة مرة أخرى بعد توفير الإدخال.

هل كانت مفيدة؟

المحلول

فقط اكتب إلى Process.StandardInput.

نصائح أخرى

هنا مقال جيد على تنفيذ عملية بشكل متزامن وغير متزامن من C#.

يمكنك إضافة معالج الحدث إلى الحدث الإخراج. يتم استدعاء هذا كلما كتبت العملية بعض البيانات إلى دفق الإخراج الذي تم إعادة توجيهه.

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
}

بالإضافة إلى ذلك ، هناك أيضًا حدث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top