Когда что-то уже написано, оттестировано и достойно справляется со своей работой, то лучше использовать это средство, нежели изобретать велосипед. Например, есть консольная утилита cpctest.exe, которая позволяет выполнять все те-же действия что и графическая оболочка, и масса других утилит из стандартного набора Windows. На разработку, отладку и покрытие тестами аналогичной функциональности уйдет драгоценное время. Так зачем его прожигать? Приступим.
Для начала нам нужно залезть на MSDN и посмотреть синтаксис стандартных команд. В результате мы увидим, что запуск любого консольного приложения состоит из имени приложения и его параметров. Приложение инстанцируется системным классом Process. Прототип нашей функции для запуска консольного приложения будет выглядеть следующим образом:
bool Execute(string commandName, IEnumerable paramsList)
Если мы захотим получать результат выполнения запущенного приложения и обрабатывать его, нам потребуется соответствующий метод:
C++. Взаимодействие двух консольных приложений
string GetResult (string commandName, IEnumerable paramsList)
Далее идем снова на MSDN и смотрим ProcessStartInfo Arguments, UseShellExecute, RedirectStandardOutput и RedirectStandardError, если Вы будете строго обрабатывать исключения как в Java. В итоге для инициализации процесса нам потребуется свойство, которое будет определять режим запуска консольного приложения и метод для инициации процесса. Для своего класса я использовал паттерн Facade.
public class CommandHelpers < public CommandHelpers() < Invisible = true; >public bool Invisible < get; set; >private Process CreateProcess(string commandName, IEnumerable paramsList, bool output = false) < string paramString = paramsList.Aggregate(null, (current, param) => current + » » + param); return new Process < StartInfo = < FileName = commandName, Arguments = paramString, UseShellExecute = output ? !output : !Invisible, RedirectStandardOutput = output >>; >
Необходимо учесть, что запускаемое приложение может работать бесконечно долго, например, ping –t youwebsite.org. Для его запуска нам потребуется соответствующий метод:
public Task ExecuteAsync(string commandName, IEnumerable paramsList)
Пример использования:
CommandHelpers.cs
using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Common.Security < /// /// See for correct use https://technet.microsoft.com/en-us/library/bb491070.aspx /// public class CommandHelpers < public CommandHelpers() < Invisible = true; >/// /// Not show CMD window /// public bool Invisible < get; set; >/// /// Execete CMD command /// /// Command name only /// Params and keys for command public bool Execute(string commandName, IEnumerable paramsList) < return CreateProcess(commandName, paramsList).Start(); >/// /// Async execete CMD command /// /// Command name only /// Params and keys for command public Task ExecuteAsync(string commandName, IEnumerable paramsList) < return Task.Factory.StartNew(() => CreateProcess(commandName, paramsList).Start()); > /// /// Returns result of command execution /// /// Command name only /// Params and keys for command /// public string GetResult(string commandName, IEnumerable paramsList) < var bufer = new StringBuilder(); using (var proc = CreateProcess(commandName, paramsList, true)) < proc.Start(); while (!proc.StandardOutput.EndOfStream) < bufer.AppendLine(proc.StandardOutput.ReadLine()); >> return bufer.ToString(); > /// /// Returns result of command execution /// Experemental. Not Tested. /// /// Command name only /// Params and keys for command /// public string GetResultAsync(string commandName, IEnumerable paramsList) < var bufer = new StringBuilder(); using (var proc = CreateProcess(commandName, paramsList, true)) < proc.OutputDataReceived += (sender, e) => < if (!string.IsNullOrEmpty(e.Data)) < bufer.AppendLine(e.Data); >>; proc.BeginOutputReadLine(); proc.EnableRaisingEvents = true; proc.WaitForExit(); > return bufer.ToString(); > private Process CreateProcess(string commandName, IEnumerable paramsList, bool output = false) < var paramString = paramsList.Aggregate(null, (current, param) => current + » » + param); return new Process < StartInfo = < FileName = commandName, Arguments = paramString, UseShellExecute = output ? !output : !Invisible, RedirectStandardOutput = output >>; > > >
Источник вдохновения для статьи:
Примеры моих программ на C#
От пользователя vedmaka: toster.ru/q/7644
Источник: habr.com
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
Консольные программы
Является ли число простым — Проверяем на языке Си
Напишем на языке Си программу, проверяющую является ли число простым. Для проверки будем использовать простейший алгоритм, основанный непосредственно на определении простого числа.
Получение информации о жестких дисках на компьютере — язык C#
На языке C# достаточно легко получить информацию о локальных дисках компьютера — для этого есть специальный класс в NET FRAMEWORK. Из урока вы узнаете, как вывести основную информацию о хранилищах и дисках на компьютере в консоль.
Как перемешать массив или список
При выполнении некоторых задач требуется перемешать случайным образом (перетасовать) массив или список с данными. Для решения данной проблемы существуют специальные алгоритмы. Рассмотрим один один из таких алгоритмов под названием Тасование Фишера-Йетса.
Тест Миллера — Рабина — проверка числа на простоту
В статье разберем алгоритм под названием Тест Миллера — Рабина. Он применяется при проверке числа на простоту.
MySQL и C# — работаем с базой данных. Запросы INSERT, UPDATE и DELETE
В видеоуроке рассказывается про выполнение запросов модификации данных в БД MySQL с помощью языка программирования C#: INSERT, UPDATE и DELETE. Помимо видео, в статье вы найдете исходный код программы из ролика.
try с ресурсами на Java
Начиная с JDK 7 в Java появилась очень полезная и удобная разновидность оператора try — он называется try с ресурсами или try с автоматическим управлением ресурсами. Данный оператор применяется к ресурсам, реализующим интерфейс AutoCloseable (в нём определён метод close()), и…
MySQL и C# — работаем с базой данных. Запросы SELECT
В видеоуроке рассмотрим работу с базой данных MySQL на примере SELECT-запросов из программы, написанной на языке программирования C#. В статье вы найдёте исходные коды примеров из видео.
Удаление символа из строки Java
В языке Java для строковых полей типа String отсутствует метод удаления символа с указанным индексом (в C# это метод Remove). Поэтому, чтобы произвести удаление символа из строки в Java нужно пойти на некоторые ухищрения. Рассмотрим в данном уроке один из…
Модульное тестирование в Visual Studio
Модульное тестирование (или Unit-тестирование) предназначено для проверки правильности выполнения небольшого блока кода, решающего свою конкретную задачу. В статье рассказывается, как проводить в модульное тестирование в Visual Studio. Разработка ведётся на языке C#.
Переменные в интерфейсе Java
В языке Java переменные, объявленные в интерфейсе, неявно всегда являются полями с модификаторами public, static и final. То есть являются константами. С данном уроке рассмотрим практическое применение переменных в интерфейсе.
Контакты
Электронная почта
Группа ВКонтакте
Twitter
RSS лента
RSS подписка
Помочь проекту
Источник: vscode.ru
Создание простого консольного приложения в C#
Аннотация: На этом занятии мы поработаем с переменными, условным операторами и циклами. Рассмотрим технологии ввода-вывода данных.
Ключевые слова: visual, приложение, текстовый файл
Дополнительные материалы к занятию можно скачать здесь.
Упражнение 5.1. Знакомство с оператором вывода
Для выполнения работы мы будем использовать среду разработки MS Visual Studio 2010.
Ход выполнения работы:
- Запустите VS 2010. Выполните следующие команды: Файл -> Создать проект -> Visual C# -> Консольное приложение -> practice_1_1.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < Console.WriteLine(«Привет! Это — моя первая программа на C#»); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); >>
Получаем следующий результат:
Упражнение 5.2. Знакомство с переменными
Создаем новое консольное приложение C#. Называем проект practice_1_2.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int age; age = 18; string str; str = «Привет! Мне » + age + » лет. А тебе?»; Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); >>
Получаем следующий результат:
Упражнение 5.3. Знакомство с переменными
Создаем новое консольное приложение C#. Называем проект practice_1_3.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int a, b, c; a = 3; b = -9; if (a >b) < c = a; >else < c = b; >string str; str = «Наибольшее из двух чисел: » + c; Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); > >
Получаем следующий результат:
Упражнение 5.4. Знакомство с математическими функциями. Нахождение наименьшего из двух чисел
Создаем новое консольное приложение C#. Называем проект practice_1_4.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int a, b, c; a = 3; b = -9; c = System.Math.Min(a, b); string str; str = «Наименьшее из двух чисел: » + c; Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); >>
Получаем следующий результат:
Упражнение 5.5. Условные операторы. Знакомство с конъюнкцией и дизъюнкцией
Создаем новое консольное приложение C#. Называем проект practice_1_5.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int Mathematics, Physics, Biology; Mathematics = 3; Physics = 4; Biology = 5; string str_1, str_2; str_1 = «Конъюнкция: «; str_2 = «Дизъюнкция: «; if (Mathematics == 5 Physics == 5 Biology == 5) < str_1 += «Отличник»; >else < str_1 += «Двоечник»; >if (Mathematics == 5 || Physics == 5 || Biology == 5) < str_2 += «Молодец»; >else < str_2 += «Лентяй»; >Console.WriteLine(str_1); Console.WriteLine(str_2); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); > >
Получаем следующий результат:
Упражнение 5.6. Знакомство с математическими функциями. Нахождение площади круга
Создаем новое консольное приложение C#. Называем проект practice_1_6.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < double r, s; r = 10; s = System.Math.PI * System.Math.Pow(r, 2); string str; str = «Площадь круга радиусом » + r + » равна » + s; Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); >>
Получаем следующий результат:
Упражнение 5.7. Знакомство с математическими функциями. Решение квадратного уравнения
Создаем новое консольное приложение C#. Называем проект practice_1_7.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < double a, b, c, d, x1, x2; string str; a = -9; b = 3; c = 11; d = System.Math.Pow(b, 2) — 4 * a * c; if (d < 0) < str = «Действительных корней нет!»; >else < x1 = (-b — System.Math.Sqrt(d)) / (2 * a); x2 = (-b + System.Math.Sqrt(d)) / (2 * a); str = «x1 = » + x1 + «nx2 = » + x2; >Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); > >
Получаем следующий результат:
Упражнение 5.8. Знакомство с математическими функциями Нахождение наибольшего из пяти чисел
Создаем новое консольное приложение C#. Называем проект practice_1_8.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int a1, a2, a3, a4, a5, b1, b2, b3, b4; string str; a1 = -8; a2 = 13; a3 = 64; a4 = 87; a5 = -61; b1 = System.Math.Max(a1, a2); b2 = System.Math.Max(a3, a4); b3 = System.Math.Max(b1, b2); b4 = System.Math.Max(a5, b3); str = «Наибольшее из пяти чисел: » + b4; Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); >>
Получаем следующий результат:
Упражнение 5.9. Знакомство с циклом for. Нахождение суммы ряда чисел от 1 до 10
Создаем новое консольное приложение C#. Называем проект practice_1_9.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int i, sum; string str; sum = 0; for (i = 1; i str = «Сумма первых 10 чисел равна: » + sum; Console.WriteLine(str); Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); > >
Получаем следующий результат:
Упражнение 5.10. Знакомство с возможностями форматирования (Герберт Шилдт)
Создаем новое консольное приложение C#. Называем проект practice_1_10.
Наберите в окне кода следующую программу:
using System; class Example < static void Main() < int i; Console.WriteLine(«ЧислоtКвадратtКуб»); for (i = 1; i < 10; i++) < Console.WriteLine(«tt», i, i * i, i * i * i); > Console.WriteLine(«Нажмите любую кнопку!»); Console.ReadKey(); > >
Получаем следующий результат:
Источник: intuit.ru