diff --git a/reactos/dll/win32/kernel32/misc/console.c b/reactos/dll/win32/kernel32/misc/console.c index 419f4373a42..9d433ddcfb6 100644 --- a/reactos/dll/win32/kernel32/misc/console.c +++ b/reactos/dll/win32/kernel32/misc/console.c @@ -1692,6 +1692,7 @@ AllocConsole(VOID) Request.Data.AllocConsoleRequest.CtrlDispatcher = ConsoleControlDispatcher; Request.Data.AllocConsoleRequest.ConsoleNeeded = TRUE; + Request.Data.AllocConsoleRequest.Visible = TRUE; CsrRequest = MAKE_CSR_API(ALLOC_CONSOLE, CSR_CONSOLE); diff --git a/reactos/dll/win32/kernel32/misc/dllmain.c b/reactos/dll/win32/kernel32/misc/dllmain.c index ef47c4d538f..bdf6f0d52e4 100644 --- a/reactos/dll/win32/kernel32/misc/dllmain.c +++ b/reactos/dll/win32/kernel32/misc/dllmain.c @@ -150,6 +150,7 @@ BasepInitConsole(VOID) { /* Assume one is needed */ Request.Data.AllocConsoleRequest.ConsoleNeeded = TRUE; + Request.Data.AllocConsoleRequest.Visible = TRUE; /* Handle the special flags given to us by BasepInitializeEnvironment */ if (Parameters->ConsoleHandle == HANDLE_DETACHED_PROCESS) @@ -168,8 +169,9 @@ BasepInitConsole(VOID) else if (Parameters->ConsoleHandle == HANDLE_CREATE_NO_WINDOW) { /* We'll get the real one soon */ - DPRINT1("NOT SUPPORTED: HANDLE_CREATE_NO_WINDOW\n"); + DPRINT("Creating new invisible console\n"); Parameters->ConsoleHandle = NULL; + Request.Data.AllocConsoleRequest.Visible = FALSE; } else { diff --git a/reactos/include/reactos/subsys/csrss/csrss.h b/reactos/include/reactos/subsys/csrss/csrss.h index 9e87a4d6b81..bf1c1e4d231 100644 --- a/reactos/include/reactos/subsys/csrss/csrss.h +++ b/reactos/include/reactos/subsys/csrss/csrss.h @@ -80,7 +80,8 @@ typedef struct typedef struct { PCONTROLDISPATCHER CtrlDispatcher; - BOOL ConsoleNeeded; + BOOLEAN ConsoleNeeded; + BOOLEAN Visible; HANDLE Console; HANDLE InputHandle; HANDLE OutputHandle; diff --git a/reactos/subsystems/win32/csrss/win32csr/conio.c b/reactos/subsystems/win32/csrss/win32csr/conio.c index ee89dad553f..0ce32c43824 100644 --- a/reactos/subsystems/win32/csrss/win32csr/conio.c +++ b/reactos/subsystems/win32/csrss/win32csr/conio.c @@ -142,7 +142,7 @@ CsrInitConsoleScreenBuffer(PCSRSS_CONSOLE Console, } static NTSTATUS WINAPI -CsrInitConsole(PCSRSS_CONSOLE Console) +CsrInitConsole(PCSRSS_CONSOLE Console, BOOL Visible) { NTSTATUS Status; SECURITY_ATTRIBUTES SecurityAttributes; @@ -210,7 +210,7 @@ CsrInitConsole(PCSRSS_CONSOLE Console) } if (GuiMode) { - Status = GuiInitConsole(Console); + Status = GuiInitConsole(Console, Visible); if (! NT_SUCCESS(Status)) { HeapFree(Win32CsrApiHeap,0, NewBuffer); @@ -286,7 +286,7 @@ CSR_API(CsrAllocConsole) /* insert process data required for GUI initialization */ InsertHeadList(&Console->ProcessList, &ProcessData->ProcessEntry); /* Initialize the Console */ - Status = CsrInitConsole(Console); + Status = CsrInitConsole(Console, Request->Data.AllocConsoleRequest.Visible); if (!NT_SUCCESS(Status)) { DPRINT1("Console init failed\n"); diff --git a/reactos/subsystems/win32/csrss/win32csr/guiconsole.c b/reactos/subsystems/win32/csrss/win32csr/guiconsole.c index 625b1b52a67..3edccbc7764 100644 --- a/reactos/subsystems/win32/csrss/win32csr/guiconsole.c +++ b/reactos/subsystems/win32/csrss/win32csr/guiconsole.c @@ -2070,7 +2070,10 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) if (NULL != NewWindow) { SetWindowLongW(hWnd, GWL_USERDATA, GetWindowLongW(hWnd, GWL_USERDATA) + 1); - ShowWindow(NewWindow, SW_SHOW); + if (wParam) + { + ShowWindow(NewWindow, SW_SHOW); + } } return (LRESULT) NewWindow; case PM_DESTROY_CONSOLE: @@ -2250,7 +2253,7 @@ static CSRSS_CONSOLE_VTBL GuiVtbl = }; NTSTATUS FASTCALL -GuiInitConsole(PCSRSS_CONSOLE Console) +GuiInitConsole(PCSRSS_CONSOLE Console, BOOL Visible) { HANDLE GraphicsStartupEvent; HANDLE ThreadHandle; @@ -2317,7 +2320,7 @@ GuiInitConsole(PCSRSS_CONSOLE Console) */ GuiData->hGuiInitEvent = CreateEventW(NULL, FALSE, FALSE, NULL); /* create console */ - PostMessageW(NotifyWnd, PM_CREATE_CONSOLE, 0, (LPARAM) Console); + PostMessageW(NotifyWnd, PM_CREATE_CONSOLE, Visible, (LPARAM) Console); /* wait untill initialization has finished */ WaitForSingleObject(GuiData->hGuiInitEvent, INFINITE); diff --git a/reactos/subsystems/win32/csrss/win32csr/guiconsole.h b/reactos/subsystems/win32/csrss/win32csr/guiconsole.h index 072ef8c8886..705fbba0d92 100644 --- a/reactos/subsystems/win32/csrss/win32csr/guiconsole.h +++ b/reactos/subsystems/win32/csrss/win32csr/guiconsole.h @@ -13,6 +13,6 @@ #define CONGUI_UPDATE_TIME 0 #define CONGUI_UPDATE_TIMER 1 -NTSTATUS FASTCALL GuiInitConsole(PCSRSS_CONSOLE Console); +NTSTATUS FASTCALL GuiInitConsole(PCSRSS_CONSOLE Console, BOOL Visible); /*EOF*/