Ответы с форумов MSDN

Консоль в приложении Windows Forms

Date: 05.06.2017 18:36:41

"Как в Win forms приложение достигнуть аналогичного вида как в запросе консольного приложения?"

WinForms приложение - это всего лишь шаблон, проекта, генерирующий определенную структуру программы для удобства. Реальное поведение определяется параметром "Тип выходных данных" в свойствах проекта:

1. Консольное приложение. В этом случае приложение автоматически получает при старте консоль запускающего процесса, если она есть. Тем не менее, впоследствии ничто не мешает приложению создавать формы, скрывать окно консоли, запускать цикл обработки сообщений и вести себя как обычное WinForms-приложение.

2. Приложение Windows. В этом случае консоль при запуске приложения не создается. Приложение может присоединиться к консоли родительского процесса и "выдавать" себя за консольное, однако его работа при этом не будет аналогична "правильному" консольному приложению, так как приложение не владеет консолью по-настоящему. В данный момент, я не вижу способа, как избавиться от вывода лишней строки приглашения при вызове AttachConsole. Скорее всего, это фундаментальное ограничение.

3. Библиотека классов. Ну, тут все ясно, нам это не подходит.

Таким образом, вам надо со своим тех. директором задать себе вопрос, что же вы на самом деле хотите получить в результате. Консольное приложение, притворяющееся WinForms-приложением, наоборот, или вообще что-то третье.

Message 777

Date: 06.06.2017 4:59:38

Так я и пытаюсь объяснить, что эта "хотелка" на 100% возможна, нужно лишь понять что именно вы хотите. "Win Forms приложение" и "консольное приложение" - не взаимоисключающие понятия. Возможно, вам нужно просто переключить тип вывода в свойствах проекта на "Консольное приложение", в функции Main вызвать GetConsoleWindow и если прога вызвана без параметров, сделать ShowWindow(hWnd, SW_HIDE); 

Message 776

Date: 06.06.2017 8:01:31

Могу предложить для запуска в GUI режиме сделать вспомогательную программу, которая будет основную программу запускать вызовом ShellExecute с параметром SW_HIDE. Тогда окно консоли изначально не должно появляться.

Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub