Лучший отвечающий
Запуск консольного приложения из WindowsForm

Вопрос
-
Необходимо на языке C# организовать программу, в которой при старте запускается WindowsForms, а уже из неё вызывается то или иное консольное приложение(их несколько штук, например Console1, Console2,...). Как из консольного приложения вызвать WindowsForms с горем пополам разобрался, но как сделать обратное никак не могу понять. Вроди бы пишу все верно:
Console1.Run();
но в ответ получаю сообщение компилятора о том, что Console1 не существует в данном контексте. Ладно, решил тупо прописать модуль от Console1 в WindowsForms:using Console1;
однако в ответ получаю: "Не удалось найти имя типа или пространства имен "Console1" (пропущена директива using или ссылка на сборку?)", хотя в "Окне классов" Console1 имеется в наличии вместе с WindowsForms.
Подскажите пожалуйста, есть ли вообще возможность из WindowsForms вызвать консольное приложение и если есть, то как это сделать?
6 ноября 2010 г. 5:31
Ответы
-
В ООП на C# ничего нельзя добавить и засунуть. ООП - это уровень классов и объектов, а не приложений и консолей.
В результате компиляции ты получить один exe-файл. Это либо одно консольное приложение, либо одно WinForms приложение. Все запихивания using-ов, вызовы Console1.Run() - это операции над объектами в одном приложении. От них консоль не откроется и новое приложение не запустится.
Хочешь вызвать консольное приложение из WinForms - создай это консольное приложение отдельным проектом, откомпилируй, получи отдельный exe-файл. И запускай его из winforms через ProcessStart.
Есть возможность открыть консоль в существующем WinForms приложении. Но это все еще не возможность "запустить Console1".
- Предложено в качестве ответа Abolmasov Dmitry 9 ноября 2010 г. 5:38
- Помечено в качестве ответа Abolmasov Dmitry 10 ноября 2010 г. 10:01
7 ноября 2010 г. 9:58Модератор
Все ответы
-
>а уже из неё вызывается то или иное консольное приложение(их несколько штук, например Console1, Console2,...)
Я правильно понимаю что Console1 и т.п. это отдельные приложения (*.exe файлы) ? Если да, то нужно запускать новый процесс.
См. класс System.Diagnostics.Process Метод Start
> хотя в "Окне классов" Console1 имеется в наличии вместе с WindowsForms.
Да, только это не классы одного проекта, а разные проекты, которые друг о друге, без специальных ухищрений со стороны программиста, ничего не знают - отсюда и такая реакция компилятора.
6 ноября 2010 г. 8:58 -
Спасибо большое за совет об использовании указанного метода(в данном случае это помогло), однако крайне интересно узнать: как в ООП на Visual C# добавить консольное приложение и как в него, извините, "засунуть" необходимые программные инструкции?6 ноября 2010 г. 12:20
-
В ООП на C# ничего нельзя добавить и засунуть. ООП - это уровень классов и объектов, а не приложений и консолей.
В результате компиляции ты получить один exe-файл. Это либо одно консольное приложение, либо одно WinForms приложение. Все запихивания using-ов, вызовы Console1.Run() - это операции над объектами в одном приложении. От них консоль не откроется и новое приложение не запустится.
Хочешь вызвать консольное приложение из WinForms - создай это консольное приложение отдельным проектом, откомпилируй, получи отдельный exe-файл. И запускай его из winforms через ProcessStart.
Есть возможность открыть консоль в существующем WinForms приложении. Но это все еще не возможность "запустить Console1".
- Предложено в качестве ответа Abolmasov Dmitry 9 ноября 2010 г. 5:38
- Помечено в качестве ответа Abolmasov Dmitry 10 ноября 2010 г. 10:01
7 ноября 2010 г. 9:58Модератор