【问题标题】:Application is not starting in interactive mode应用程序未以交互模式启动
【发布时间】:2014-02-18 09:14:01
【问题描述】:

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

【问题讨论】:

  • 拜托!!!我已经做了我知道的一切..
  • 请添加RunCommand函数代码

标签: c# multithreading process console-application


【解决方案1】:

我认为这里的问题是您试图过于复杂,或者上面的示例没有正确说明您的问题。

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

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

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

【讨论】:

  • 是的,它会打开应用程序,但在我的场景中,我必须先打开命令提示符,然后我必须执行我选择的命令。比如打开记事本,关闭一些东西等等。
  • 我可以在 windows 7 中使用相同的代码来完成这些任务。但是相同的可执行文件在 win 7 中的行为并不正常。
  • 在 windows 7 中,程序在使用 Runcommand 启动时启动。但在 windows xp 中它只是启动并保持在背景中。从不启动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多