- Fix NtUserCallMsgFilter to use SEH. Add support for system commands related to hooks.

svn path=/trunk/; revision=34696
This commit is contained in:
James Tabor 2008-07-23 19:59:20 +00:00
parent 3383fdae0a
commit 2ca130fb8b
2 changed files with 27 additions and 3 deletions

View file

@ -12,7 +12,25 @@
#define NDEBUG
#include <debug.h>
LRESULT FASTCALL
IntDefWinHandleSysCommand( PWINDOW_OBJECT Window, WPARAM wParam, LPARAM lParam , BOOL Ansi)
{
DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Window->hSelf, wParam, lParam );
if (!ISITHOOKED(WH_CBT)) return 0;
if (!UserCallNextHookEx(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam, Ansi))
return 0;
switch (wParam & 0xfff0)
{
case SC_MOVE:
case SC_SIZE:
return UserCallNextHookEx(WH_CBT, HCBT_MOVESIZE, (WPARAM)Window->hSelf, lParam, Ansi);
break;
}
return 1;
}
/*
Win32k counterpart of User DefWindowProc
*/
@ -25,6 +43,7 @@ IntDefWindowProc(
BOOL Ansi)
{
PWINDOW Wnd;
LRESULT lResult = 0;
if (Msg > WM_USER) return 0;
@ -33,6 +52,11 @@ IntDefWindowProc(
switch (Msg)
{
case WM_SYSCOMMAND:
{
lResult = IntDefWinHandleSysCommand( Window, wParam, lParam, Ansi );
break;
}
case WM_SHOWWINDOW:
{
if ((Wnd->Style & WS_VISIBLE) && wParam) break;
@ -54,7 +78,7 @@ IntDefWindowProc(
break;
}
return 0;
return lResult;
}

View file

@ -306,9 +306,9 @@ NtUserCallMsgFilter(
DPRINT("Enter NtUserCallMsgFilter\n");
UserEnterExclusive();
if (co_HOOK_CallHooks( WH_SYSMSGFILTER, code, 0, (LPARAM)msg))
if ( UserCallNextHookEx( WH_SYSMSGFILTER, code, 0, (LPARAM)msg, FALSE))
RETURN( TRUE);
RETURN( co_HOOK_CallHooks( WH_MSGFILTER, code, 0, (LPARAM)msg));
RETURN( UserCallNextHookEx( WH_MSGFILTER, code, 0, (LPARAM)msg, FALSE));
CLEANUP:
DPRINT("Leave NtUserCallMsgFilter. ret=%i\n", _ret_);