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