From 21ac81fe7248ae55dcc05cbab4e428db5e3ec3ef Mon Sep 17 00:00:00 2001 From: Rafal Harabien Date: Sun, 20 Nov 2011 14:35:41 +0000 Subject: [PATCH] [KERNEL32/WIN32CSR] - Use ShowCmd from STARTUPINFO when creating console window svn path=/trunk/; revision=54456 --- reactos/dll/win32/kernel32/client/dllmain.c | 6 ++++-- reactos/dll/win32/kernel32/client/file/console.c | 5 ++++- reactos/include/reactos/subsys/csrss/csrss.h | 2 +- reactos/subsystems/win32/csrss/win32csr/console.c | 6 +++--- reactos/subsystems/win32/csrss/win32csr/guiconsole.c | 9 +++------ 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/dllmain.c b/reactos/dll/win32/kernel32/client/dllmain.c index 664bf925532..57502c4c387 100644 --- a/reactos/dll/win32/kernel32/client/dllmain.c +++ b/reactos/dll/win32/kernel32/client/dllmain.c @@ -67,6 +67,7 @@ BasepInitConsole(VOID) BOOLEAN NotConsole = FALSE; PRTL_USER_PROCESS_PARAMETERS Parameters = NtCurrentPeb()->ProcessParameters; LPCWSTR ExeName; + STARTUPINFO si; WCHAR lpTest[MAX_PATH]; GetModuleFileNameW(NULL, lpTest, MAX_PATH); @@ -86,8 +87,9 @@ BasepInitConsole(VOID) else { /* Assume one is needed */ + GetStartupInfo(&si); Request.Data.AllocConsoleRequest.ConsoleNeeded = TRUE; - Request.Data.AllocConsoleRequest.Visible = TRUE; + Request.Data.AllocConsoleRequest.ShowCmd = si.wShowWindow; /* Handle the special flags given to us by BasepInitializeEnvironment */ if (Parameters->ConsoleHandle == HANDLE_DETACHED_PROCESS) @@ -108,7 +110,7 @@ BasepInitConsole(VOID) /* We'll get the real one soon */ DPRINT("Creating new invisible console\n"); Parameters->ConsoleHandle = NULL; - Request.Data.AllocConsoleRequest.Visible = FALSE; + Request.Data.AllocConsoleRequest.ShowCmd = SW_HIDE; } else { diff --git a/reactos/dll/win32/kernel32/client/file/console.c b/reactos/dll/win32/kernel32/client/file/console.c index 91c71262cf8..040634345fe 100644 --- a/reactos/dll/win32/kernel32/client/file/console.c +++ b/reactos/dll/win32/kernel32/client/file/console.c @@ -1823,6 +1823,7 @@ AllocConsole(VOID) ULONG CsrRequest; NTSTATUS Status; HANDLE hStdError; + STARTUPINFO si; if (NtCurrentPeb()->ProcessParameters->ConsoleHandle) { @@ -1831,9 +1832,11 @@ AllocConsole(VOID) return FALSE; } + GetStartupInfo(&si); + Request.Data.AllocConsoleRequest.CtrlDispatcher = ConsoleControlDispatcher; Request.Data.AllocConsoleRequest.ConsoleNeeded = TRUE; - Request.Data.AllocConsoleRequest.Visible = TRUE; + Request.Data.AllocConsoleRequest.ShowCmd = si.wShowWindow; CsrRequest = MAKE_CSR_API(ALLOC_CONSOLE, CSR_CONSOLE); diff --git a/reactos/include/reactos/subsys/csrss/csrss.h b/reactos/include/reactos/subsys/csrss/csrss.h index 6dc00494366..9a31dee4bf1 100644 --- a/reactos/include/reactos/subsys/csrss/csrss.h +++ b/reactos/include/reactos/subsys/csrss/csrss.h @@ -83,7 +83,7 @@ typedef struct { PCONTROLDISPATCHER CtrlDispatcher; BOOLEAN ConsoleNeeded; - BOOLEAN Visible; + INT ShowCmd; HANDLE Console; HANDLE InputHandle; HANDLE OutputHandle; diff --git a/reactos/subsystems/win32/csrss/win32csr/console.c b/reactos/subsystems/win32/csrss/win32csr/console.c index f74cd28168c..193e16c1265 100644 --- a/reactos/subsystems/win32/csrss/win32csr/console.c +++ b/reactos/subsystems/win32/csrss/win32csr/console.c @@ -67,7 +67,7 @@ ConioConsoleCtrlEvent(DWORD Event, PCSRSS_PROCESS_DATA ProcessData) } static NTSTATUS WINAPI -CsrInitConsole(PCSRSS_CONSOLE Console, BOOL Visible) +CsrInitConsole(PCSRSS_CONSOLE Console, int ShowCmd) { NTSTATUS Status; SECURITY_ATTRIBUTES SecurityAttributes; @@ -142,7 +142,7 @@ CsrInitConsole(PCSRSS_CONSOLE Console, BOOL Visible) } if (GuiMode) { - Status = GuiInitConsole(Console, Visible); + Status = GuiInitConsole(Console, ShowCmd); if (! NT_SUCCESS(Status)) { HeapFree(Win32CsrApiHeap,0, NewBuffer); @@ -217,7 +217,7 @@ CSR_API(CsrAllocConsole) /* insert process data required for GUI initialization */ InsertHeadList(&Console->ProcessList, &ProcessData->ProcessEntry); /* Initialize the Console */ - Status = CsrInitConsole(Console, Request->Data.AllocConsoleRequest.Visible); + Status = CsrInitConsole(Console, Request->Data.AllocConsoleRequest.ShowCmd); 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 e54e4dd9052..b3bb2884b44 100644 --- a/reactos/subsystems/win32/csrss/win32csr/guiconsole.c +++ b/reactos/subsystems/win32/csrss/win32csr/guiconsole.c @@ -2097,10 +2097,7 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) if (NULL != NewWindow) { SetWindowLongW(hWnd, GWL_USERDATA, GetWindowLongW(hWnd, GWL_USERDATA) + 1); - if (wParam) - { - ShowWindow(NewWindow, SW_SHOW); - } + ShowWindow(NewWindow, (int)wParam); } return (LRESULT) NewWindow; case PM_DESTROY_CONSOLE: @@ -2280,7 +2277,7 @@ static CSRSS_CONSOLE_VTBL GuiVtbl = }; NTSTATUS FASTCALL -GuiInitConsole(PCSRSS_CONSOLE Console, BOOL Visible) +GuiInitConsole(PCSRSS_CONSOLE Console, int ShowCmd) { HANDLE GraphicsStartupEvent; HANDLE ThreadHandle; @@ -2347,7 +2344,7 @@ GuiInitConsole(PCSRSS_CONSOLE Console, BOOL Visible) */ GuiData->hGuiInitEvent = CreateEventW(NULL, FALSE, FALSE, NULL); /* create console */ - PostMessageW(NotifyWnd, PM_CREATE_CONSOLE, Visible, (LPARAM) Console); + PostMessageW(NotifyWnd, PM_CREATE_CONSOLE, ShowCmd, (LPARAM) Console); /* wait untill initialization has finished */ WaitForSingleObject(GuiData->hGuiInitEvent, INFINITE);