none
Запуск консольного приложения из WindowsForm RRS feed

  • Вопрос

  • Необходимо на языке 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
    Модератор