[CONSRV] Don't show the newly-created console if the window station, on which the console is created, is not interactive.

This commit is contained in:
Hermès Bélusca-Maïto 2018-06-10 03:59:22 +02:00
parent 243fe6d6a3
commit 8a83c24419
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -203,9 +203,7 @@ GuiConsoleInputThread(PVOID Param)
if (GuiData->GuiInfo.FullScreen) SwitchFullScreen(GuiData, TRUE);
DPRINT("PM_CREATE_CONSOLE -- showing window\n");
// ShowWindow(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
ShowWindowAsync(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
DPRINT("Window showed\n");
}
else
{
@ -1174,6 +1172,7 @@ GuiLoadFrontEnd(IN OUT PFRONTEND FrontEnd,
{
PCONSOLE_START_INFO ConsoleStartInfo;
PGUI_INIT_INFO GuiInitInfo;
USEROBJECTFLAGS UserObjectFlags;
if (FrontEnd == NULL || ConsoleInfo == NULL || ConsoleInitInfo == NULL)
return STATUS_INVALID_PARAMETER;
@ -1194,6 +1193,21 @@ GuiLoadFrontEnd(IN OUT PFRONTEND FrontEnd,
return STATUS_UNSUCCESSFUL;
}
GuiInitInfo->IsWindowVisible = ConsoleInitInfo->IsWindowVisible;
if (GuiInitInfo->IsWindowVisible)
{
/* Don't show the console if the window station is not interactive */
if (GetUserObjectInformationW(GuiInitInfo->WinSta,
UOI_FLAGS,
&UserObjectFlags,
sizeof(UserObjectFlags),
NULL))
{
if (!(UserObjectFlags.dwFlags & WSF_VISIBLE))
GuiInitInfo->IsWindowVisible = FALSE;
}
}
/*
* Load terminal settings
*/
@ -1209,7 +1223,7 @@ GuiLoadFrontEnd(IN OUT PFRONTEND FrontEnd,
GuiInitInfo->TermInfo.ShowWindow = SW_SHOWNORMAL;
if (ConsoleInitInfo->IsWindowVisible)
if (GuiInitInfo->IsWindowVisible)
{
/* 2. Load the remaining console settings via the registry */
if ((ConsoleStartInfo->dwStartupFlags & STARTF_TITLEISLINKNAME) == 0)
@ -1256,7 +1270,6 @@ GuiLoadFrontEnd(IN OUT PFRONTEND FrontEnd,
// Display
GuiInitInfo->TermInfo.FullScreen = ConsoleInfo->FullScreen;
// GuiInitInfo->TermInfo.ShowWindow;
GuiInitInfo->TermInfo.AutoPosition = ConsoleInfo->AutoPosition;
GuiInitInfo->TermInfo.WindowOrigin = ConsoleInfo->WindowPosition;
@ -1273,8 +1286,6 @@ GuiLoadFrontEnd(IN OUT PFRONTEND FrontEnd,
// ASSERT(GuiInitInfo->hIcon && GuiInitInfo->hIconSm);
GuiInitInfo->IsWindowVisible = ConsoleInitInfo->IsWindowVisible;
/* Finally, initialize the frontend structure */
FrontEnd->Vtbl = &GuiVtbl;
FrontEnd->Context = NULL;