2014-02-18 3 views
0

Я пытаюсь запустить блокнот из консольного приложения, используя 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"); 
      } 
+0

Пожалуйста, я сделал все, что знал .. – ataurrehman

+0

Добавить, пожалуйста, код функции RunCommand – MikkaRin

ответ

0

Я думаю, что проблема здесь в том, что вы пытаетесь быть слишком сложным, или, может быть, что в приведенном выше примере не иллюстрирует проблему правильно.

т.е. Вы можете запустить записную книжку со следующим кодом

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

Так что, если вам не нужно, чтобы иметь возможность отправлять множество консольных строк кода на консоль, что вы открыли, или вам нужно прочитать консольные потоки, то просто попробуйте soemthing действительно просто. Надеюсь это поможет.

+0

yes Это правда. Он откроет приложение, но в моем сценарии мне нужно сначала открыть командную строку, а затем я должен выполнить команды мой выбор. Как открыть блокнот, закрыть что-то и т. Д. – ataurrehman

+0

Я могу выполнить эту задачу с тем же кодом в Windows 7. Но тот же исполняемый файл ведет себя не так, как он себя ведет в win 7. – ataurrehman

+0

В Windows 7 программа запускается при запуске с помощью Runcommand , но в windows xp он только начинается и держит его в backgroud. Никогда не запускает – ataurrehman

Смежные вопросы