应用程序未以交互模式启动

时间:2014-02-18 09:14:01

标签: c# multithreading process console-application

我正在尝试使用process.start()从控制台应用程序启动记事本。记事本也是打开的,但它是在后台。一旦我关闭我的控制台应用程序它启动。 以下是我的代码。我试过在主线程和单独的线程中打开它。 建议我以交互模式打开记事本或其他程序而不被阻止的方法。

请帮助我

 static void RunApplication()
            {
                Process proc = new Process
                {
                    StartInfo = new ProcessStartInfo
                    {
                        FileName = @"C:\Windows\system32\cmd.exe",
                        UseShellExecute = false,
                        RedirectStandardOutput = true,
                        RedirectStandardError = true,
                        RedirectStandardInput = true,

                    },
                };
                proc.OutputDataReceived += App_OutputDataReceived;
                proc.ErrorDataReceived += App_ErrorDataReceived;
                proc.Start();
                proc.BeginErrorReadLine();
                proc.BeginOutputReadLine();

                RunCommand(proc, @"C:");
                RunCommand(proc, @"notepad.exe");
                Thread.Sleep(10000);

            }



    static void RunCommand(Process p, string command)
            {
                p.StandardInput.WriteLine(command);

                p.StandardInput.Flush();
            }

    static void App_OutputDataReceived(object sender, DataReceivedEventArgs e)
            {
                //OutPutReceivedFromThread += e.Data + "\r\n";
                Console.WriteLine(e.Data + "\r\n");
            }

            static void App_ErrorDataReceived(object sender, DataReceivedEventArgs e)
            {
                //OutPutReceivedFromThread += e.Data + "\r\n";
                Console.WriteLine(e.Data + "\r\n");
            }

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是你试图太复杂,或者上面的例子没有正确说明你的问题。

即。您可以使用以下代码运行记事本

    static void Main(string[] args)
    {
        Process.Start("notepad.exe");
    }

因此,除非您需要将许多控制台代码行发送到您打开的控制台,或者您需要读取控制台流,然后尝试soemthing非常简单。希望这会有所帮助。