mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 17:45:41 +00:00
[KERNEL32], [WIN32CSR] Implement the CREATE_NO_WINDOW flag which creates a console with an invisible window.
svn path=/trunk/; revision=47326
This commit is contained in:
parent
38734242d5
commit
44ce7e4f55
6 changed files with 16 additions and 9 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -80,7 +80,8 @@ typedef struct
|
|||
typedef struct
|
||||
{
|
||||
PCONTROLDISPATCHER CtrlDispatcher;
|
||||
BOOL ConsoleNeeded;
|
||||
BOOLEAN ConsoleNeeded;
|
||||
BOOLEAN Visible;
|
||||
HANDLE Console;
|
||||
HANDLE InputHandle;
|
||||
HANDLE OutputHandle;
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue