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

C# 应用程序未以交互模式启动,c#,multithreading,process,console-application,C#,Multithreading,Process,Console Application,我正在尝试使用process.start()从控制台应用程序启动记事本。记事本也在打开,但它在后台。我一关闭控制台应用程序,它就会启动。 下面是我的代码。我试着在主线程和单独的线程中打开它。 建议我如何在交互模式下打开记事本或其他程序而不被阻止 请帮帮我 static void RunApplication() { Process proc = new Process {

我正在尝试使用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");
            }

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

i、 e.您可以使用以下代码运行记事本

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

因此,除非您需要能够向打开的控制台发送许多控制台代码行,或者需要读取控制台流,否则只需尝试非常简单的soemthing。希望这有帮助。

请!!!我已经做了我所知道的一切..添加RunCommand函数的代码是的,它确实会打开应用程序,但在我的场景中,我必须先打开命令提示符,然后执行我选择的命令。比如打开记事本,关闭一些东西等等。我可以在Windows7中用同样的代码完成这些任务。但同一可执行文件的行为与win 7中的行为不一样。在windows 7中,程序在使用Runcommand启动时启动。但在WindowsXP中,它只是启动并保持在后台。永不发射