X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=win32ss%2Fuser%2Fwinsrv%2Fusersrv%2Fharderror.c;h=6ff336aff53e90d8be4b2ed1e496f2dd0b6a0ee3;hp=85ef9fe23d46b8dc19a9ae1a6f45248f88e8cdce;hb=3270979327444f7870057a0917cddd1072ea108f;hpb=fd39f92fcb8545f9f9eff46362827339dc3eab30 diff --git a/win32ss/user/winsrv/usersrv/harderror.c b/win32ss/user/winsrv/usersrv/harderror.c index 85ef9fe23d4..6ff336aff53 100644 --- a/win32ss/user/winsrv/usersrv/harderror.c +++ b/win32ss/user/winsrv/usersrv/harderror.c @@ -1012,16 +1012,34 @@ UserpMessageBox( IN ULONG Timeout) { ULONG MessageBoxResponse; + HDESK hDesk, hOldDesk; DPRINT("Text = '%S', Caption = '%S', Type = 0x%lx\n", TextStringU->Buffer, CaptionStringU->Buffer, Type); + // TEMPORARY HACK to fix desktop assignment for harderror message boxes. + hDesk = OpenInputDesktop(0, FALSE, GENERIC_WRITE); + if (!hDesk) + return ResponseNotHandled; + + /* Assign the desktop to this thread */ + hOldDesk = GetThreadDesktop(GetCurrentThreadId()); + if (!SetThreadDesktop(hDesk)) + { + CloseDesktop(hDesk); + return ResponseNotHandled; + } + /* Display a message box */ MessageBoxResponse = MessageBoxTimeoutW(NULL, TextStringU->Buffer, CaptionStringU->Buffer, Type, 0, Timeout); + /* Restore the original desktop */ + SetThreadDesktop(hOldDesk); + CloseDesktop(hDesk); + /* Return response value */ switch (MessageBoxResponse) {