Index: reactos/sdk/include/ndk/rtltypes.h =================================================================== --- reactos/sdk/include/ndk/rtltypes.h (revision 75354) +++ reactos/sdk/include/ndk/rtltypes.h (working copy) @@ -53,6 +53,7 @@ #define RTL_USER_PROCESS_PARAMETERS_LOCAL_DLL_PATH 0x2000 #define RTL_USER_PROCESS_PARAMETERS_IMAGE_KEY_MISSING 0x4000 #define RTL_USER_PROCESS_PARAMETERS_NX 0x20000 +#define RTL_USER_PROCESS_PARAMETERS_MASK_EXCEPTIONS 0x80000 #define RTL_MAX_DRIVE_LETTERS 32 #define RTL_DRIVE_LETTER_VALID (USHORT)0x0001 Index: reactos/win32ss/user/user32/windows/message.c =================================================================== --- reactos/win32ss/user/user32/windows/message.c (revision 75354) +++ reactos/win32ss/user/user32/windows/message.c (working copy) @@ -1409,7 +1409,7 @@ { MSG AnsiMsg; MSG UnicodeMsg; - BOOL Hook = FALSE, MsgOverride = FALSE, Dialog, DlgOverride = FALSE; + BOOL Hook = FALSE, MsgOverride = FALSE, Dialog, DlgOverride = FALSE, MaskExceptions; LRESULT Result = 0, PreResult = 0; DWORD Data = 0; @@ -1424,6 +1424,8 @@ else Dialog = FALSE; + MaskExceptions = Dialog || (NtCurrentPeb()->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_MASK_EXCEPTIONS); + Hook = BeginIfHookedUserApiHook(); if (Hook) { @@ -1463,7 +1465,7 @@ if (PreResult) goto Exit; - if (!Dialog) + if (!MaskExceptions) Result = CALL_EXTERN_WNDPROC(WndProc, AnsiMsg.hwnd, AnsiMsg.message, AnsiMsg.wParam, AnsiMsg.lParam); else { @@ -1473,7 +1475,7 @@ } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { - ERR("Exception Dialog Ansi %p Msg %d pti %p Wndpti %p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti); + ERR("Exception %s Ansi %p Msg %d pti %p Wndpti %p\n",Dialog?"Dialog":"ProcParam",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti); } _SEH2_END; } @@ -1517,7 +1519,7 @@ if (PreResult) goto Exit; - if (!Dialog) + if (!MaskExceptions) Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam); else { @@ -1527,7 +1529,7 @@ } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { - ERR("Exception Dialog unicode %p Msg %d pti %p Wndpti %p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti); + ERR("Exception %s unicode %p Msg %d pti %p Wndpti %p\n",Dialog?"Dialog":"ProcParam",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti); } _SEH2_END; } @@ -1564,7 +1566,7 @@ { MSG AnsiMsg; MSG UnicodeMsg; - BOOL Hook = FALSE, MsgOverride = FALSE, Dialog, DlgOverride = FALSE; + BOOL Hook = FALSE, MsgOverride = FALSE, Dialog, DlgOverride = FALSE, MaskExceptions; LRESULT Result = 0, PreResult = 0; DWORD Data = 0; @@ -1582,6 +1584,8 @@ else Dialog = FALSE; + MaskExceptions = Dialog || (NtCurrentPeb()->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_MASK_EXCEPTIONS); + Hook = BeginIfHookedUserApiHook(); if (Hook) { @@ -1609,7 +1613,7 @@ if (PreResult) goto Exit; - if (!Dialog) + if (!MaskExceptions) Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam); else { @@ -1670,7 +1674,7 @@ if (PreResult) goto Exit; - if (!Dialog) + if (!MaskExceptions) Result = CALL_EXTERN_WNDPROC(WndProc, UnicodeMsg.hwnd, UnicodeMsg.message, UnicodeMsg.wParam, UnicodeMsg.lParam); else {