0
- 02.09.2014 - 08:18
|
Добрый день! Задача: из своего консольного приложения выполнять стандартные консольные команды (к примеру "dir") и возвращать себе результат выполнения этих команд. Сейчас выполняю команды с помощью System.Diagnostics.Process.Start, которое каждый раз создает новое окно процесса cmd.exe. Конечно можно через WinAPI достать содержимое этого окна, но это как то громоздко и грязно. Подскажите пожалуйста более адекватный метод. | |
1
- 02.09.2014 - 08:41
|
Простой пример выполнения команды dir и принятие ответа от процесса cmd (про выставленные флаги почитаете, для чего это): Process cmd = new Process(); cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStandardOutput = true; cmd.StartInfo.CreateNoWindow = true; cmd.StartInfo.UseShellExecute = false; cmd.Start(); /* выполнение "dir" */ cmd.StandardInput.WriteLine("dir"); cmd.StandardInput.Flush(); cmd.StandardInput.Close(); MessageBox.Show(cmd.StandardOutput.ReadToEnd()); Console.WriteLine(cmd.StandardOutput.ReadToEnd()); | |
2
- 02.09.2014 - 08:43
|
Есть ещё вот такая интересная обёртка, думаю разберётесь: static void ExecuteCommand(string command) ** int exitCode; ProcessStartInfo processInfo; Process process; processInfo = new ProcessStartInfo("cmd.exe", "/c " + command); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; // *** Redirect the output *** processInfo.RedirectStandardError = true; processInfo.RedirectStandardOutput = true; process = Process.Start(processInfo); process.WaitForExit(); // *** Read the streams *** string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); exitCode = process.ExitCode; Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output)); Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error)); Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand"); process.Close(); ** static void Main() ** ExecuteCommand("echo testing"); ** | |
3
- 02.09.2014 - 08:52
| Большое спасибо! Первый пример подошел на 100% | |
| Интернет-форум Краснодарского края и Краснодара |