Консольное/оконное приложение по наличию аргумента командной строки - C#
Формулировка задачи:
Вопрос:
Можно ли в main() организовать две ветви: если args.Length == 0, то запускается интерфейс Windows Form, а если есть аргумент (имя файла исходных данных), то запускается консоль с выводом результатов расчета в консоль с возможностью переадресации выдачи в файл стандартным способом (через >)?
Решение задачи: «Консольное/оконное приложение по наличию аргумента командной строки»
textual
Листинг программы
static void Main(string[] args) { if (args.Length==0) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } else { CreateConsole(); } } public static void CreateConsole() { AllocConsole(); // перенаправление ввода/вывода в консоль. (visual studio перенаправляет в Output window при отладке проекта с типом Windows приложение) IntPtr defaultStdout = new IntPtr(7); IntPtr currentStdout = GetStdHandle(STD_OUTPUT_HANDLE); if (currentStdout != defaultStdout) { SetStdHandle(STD_OUTPUT_HANDLE, defaultStdout); } IntPtr defaultStdin = new IntPtr(3); IntPtr currentStdint = GetStdHandle(STD_INPUT_HANDLE); if (currentStdint != defaultStdin) { SetStdHandle(STD_INPUT_HANDLE, defaultStdin); } } private const int STD_OUTPUT_HANDLE = -11; private const int STD_INPUT_HANDLE = -10; [DllImport("kernel32.dll")] private static extern IntPtr GetStdHandle(int nStdHandle); [DllImport("kernel32.dll")] private static extern void SetStdHandle(int nStdHandle, IntPtr handle); [DllImport("kernel32.dll")] static extern bool AllocConsole();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д