Как выполнять дочерние консольные программы, не показывая окно консоли из программы Win32 GUI?

(I ' Я искал SO-ответы и не нашел четкого решения этой проблемы.)

Я работаю над программой MFC GUI. Эта программа запускает различные дочерние программы, включая консольную программу и командный сценарий оболочки (.cmd).

Первоначально она отображала одно окно графического интерфейса пользователя и одно окно консоли (созданное с помощью AllocConsole ), поскольку из консоли выводится много дочерние процессы. Но многие пользователи жаловались на окно консоли, поэтому мы решили скрыть окно консоли.

Сначала попробовали, как показано ниже:

if (AllocConsole())
{
    ::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}

Хорошо, окна консоли нет, но есть видимое мерцание во время создания консоли.

Первоначально он отображал одно окно графического интерфейса пользователя и одно окно консоли (созданное с помощью AllocConsole ), потому что дочерние процессы выводят много сообщений консоли. Но многие пользователи жаловались на окно консоли, поэтому мы решили скрыть окно консоли.

Сначала попробовали, как показано ниже:

if (AllocConsole())
{
    ::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}

Хорошо, окна консоли нет, но есть видимое мерцание во время создания консоли.

Первоначально он отображал одно окно графического интерфейса пользователя и одно окно консоли (созданное с помощью AllocConsole ), потому что дочерние процессы выводят много сообщений консоли. Но многие пользователи жаловались на окно консоли, поэтому мы решили скрыть окно консоли.

Сначала попробовали, как показано ниже:

if (AllocConsole())
{
    ::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}

Хорошо, окна консоли нет, но есть видимое мерцание во время создания консоли. Я пробовал несколько опций CreateProcess для создания дочернего процесса, чтобы полностью предотвратить отображение окна консоли, но в итоге потерпел неудачу, и я думаю, что это практически невозможно.

Это не имеет большого значения. Мы можем игнорировать временное мерцание окна при запуске.

Но разве невозможно полностью скрыть дочернее окно консоли?

11
задан 9dan 20 January 2011 в 05:21
поделиться