2015-08-16 3 views
0

У меня есть программа на C#; когда я нажимаю кнопку, я хочу, чтобы она открыла CMD-окно, затем автоматически введите cmd-окно и запустите указанную команду. До сих пор у меня это было от 4 часов исследований. Но ничего не работает.Как автозаполнение cmd prompt

Process p = new Process(); 
     p.StartInfo.UseShellExecute = false; 
     p.StartInfo.RedirectStandardInput = true; 
     p.StartInfo.RedirectStandardOutput = true; 
     p.StartInfo.FileName = "cmd.exe"; 
     //p.StartInfo.CreateNoWindow = true;    
     p.Start(); 

     p.StandardInput.WriteLine("ipconfig"); 

Любая идея о том, как заполнить определенный текст, затем автоматически запускать его при нажатии кнопки?

+0

«Когда кнопка нажата»? Какая кнопка? Я думал, что ваша программа дистанционно управляет окном командной строки ...? (Кстати, почему бы вам просто не начать «ipconfig» как отдельный процесс напрямую и перенаправить свой стандартный * вывод *? Что вы на самом деле пытаетесь достичь в конце? Возможно, ваше текущее решение сложнее, чем должно быть.) – stakx

+0

Просто пытаюсь учиться. При нажатии кнопки открывается cmd и выполняется команда. –

ответ

2

С StandardInput и StandardOutput перенаправлено, вы не видите открытого окна. Если вы хотите создать новый cmd окно и запустить ipconfig в нем, вы можете сделать это:

var p = new Process(); 
p.StartInfo.FileName = "cmd.exe"; 
p.StartInfo.Arguments = "/c ipconfig & pause"; 
p.Start(); 
+0

Спасибо, это сработало! –

+0

@ColinCappetto Рад помочь ;-) –

0

Я согласен, что если все, что вам нужно сделать, это выполнить «IpConfig» вы можете просто вызвать его вместо ЦМД. Exe. Предполагая, что вы хотите делать другие вещи с помощью cmd.exe, вот пример того, как его вызывать, выполнить команду, а затем завершить (с помощью переключателя/K вместо/C будет выполняться работа cmd.exe):

using System; 
using System.Diagnostics; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process p = new Process(); 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.RedirectStandardInput = true; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.StartInfo.FileName = "cmd.exe"; 
      p.StartInfo.Arguments = "/C ipconfig"; 
      p.Start(); 

      var output = p.StandardOutput.ReadToEnd(); 
      Console.Write(output); 
      Console.ReadKey(); 
     } 
    } 
} 
+0

Зачем использовать 'cmd.exe' вообще, а не просто' p.StartInfo.FileName = "ipconfig.exe"?? Если вы собираетесь перенаправить стандартный вывод и не создать новое отдельное окно консоли, нет никаких причин для запуска 'cmd.exe' –

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