2013-04-10 3 views
2

У меня проблема с моим проектом C# (приложение для Windows Form). У меня есть две кнопки. Когда я нажимаю на первый, он откроет cmd. Все работает нормально.запустить команду в открывшемся cmd

То, что я хочу достичь: Кнопка 2 должна использовать открытую команду cmd, вставить и собирать выходные данные из нее. Я не хочу открывать cmd для каждой команды. Будет больше кнопок с разными командами.

Возможно ли это?

private void button3_Click(object sender, EventArgs e) 
     { 
      string my_script = textBox3.Text; 
      System.Windows.Forms.MessageBox.Show(my_id.ToString()); 

     } 

     public int my_id; 
     public void connection_Click(object sender, EventArgs e) 
     { 

      System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
      startInfo.FileName = "cmd.exe"; 
      System.Diagnostics.Process process = new System.Diagnostics.Process(); 
      process.StartInfo = startInfo; 
      process.Start(); 
      my_id = process.Id; 
    } 
+0

Выполняете свои SQL-запросы с помощью окна 'cmd'? –

+0

какую команду вы хотите запустить? – KF2

+0

Посмотрите здесь http://stackoverflow.com/questions/4587415/how-to-capture-shell-command-output-in-c –

ответ

2

Вы можете использовать process.StandardInput для отправки команд на выполнение cmd.exe и process.StandardOutput читать результаты.

+0

проблема в том, что я не хочу запускать cmd с каждой кнопкой. Я хотел открыть его один раз, а другие кнопки должны отправить только команду в эту открытую консоль. – cotablise

+0

Вам не нужно запускать его при каждом нажатии кнопки. Откройте его в первый раз с параметром/K, чтобы он не закрывался сам по себе. А затем пишите команды для обработки. StandardInput. Это похоже на ввод их непосредственно в cmd-окно. – alex

+0

Извините, я начинаю программировать. Как мне это сделать? Я попытаюсь добавить весь код, что у меня есть, дайте мне второй – cotablise

2

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

Прочитайте это: http://www.codeproject.com/Articles/335909/Embedding-a-Console-in-a-C-Application

+0

Хммм интересно, мне нужно будет прочитать ее глубже. Для меня не важно видеть консоль. Команды могут работать на фоне. Если не будет ничего проще, это также может помочь. Я дам вам знать. Спасибо за ваш ответ. – cotablise

+0

Тем не менее, большая часть времени, [ответ Алекса] (http://stackoverflow.com/a/15929927/588868) будет соответствовать таким требованиям. Вы должны действительно объяснить, какую команду вы должны выполнять, чтобы помочь нам понять, какова ваша цель. –

+0

нажмите кнопку Button1 - cmd будет открыт; нажмите кнопку Button2 - команда «systeminfo» будет выполнена в открывшемся cmd; нажмите кнопку Button3 - команда «имя хоста» будет выполнена в открывшемся cmd – cotablise

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