(Я искал ответы SO и не нашел четкого решения этой проблемы.)
Я работаю над программой MFC GUI.Эта программа запускает различные дочерние программы, включая консольную программу и командный сценарий оболочки (.cmd).
Изначально она отображала одно окно графического интерфейса пользователя и одно окно консоли (созданное с помощью AllocConsole
), потому что от дочернего элемента было много выходных данных консолипроцессы.Но многие пользователи жаловались на окно консоли, поэтому мы решили скрыть окно консоли.
Сначала попробовали, как показано ниже:
if (AllocConsole())
{
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}
Хорошо, нет окна консоли, но на консоли видны мерцаниявремя создания.Я попробовал несколько вариантов CreateProcess
для создания дочерних процессов, чтобы вообще не показывать окно консоли, но не смог, и я думаю, что это практически невозможно.
Это не так уж важно.Мы можем игнорировать временное мерцание окна при запуске.
Но действительно ли невозможно полностью скрыть дочернее окно консоли?