Caveats
This hook’s most outstanding feature is that you can use it only as a system-wide hook. This means that the filter function must reside in a Win32 DLL. This DLL is injected into every running process. Therefore, this hook carries with it a bigger performance penalty than thread-specific hooks.
You should remember that this hook intercepts sent messages only. During the modal loop, no messages can be posted to the thread’s message queue.
Watch your return values because a returned zero will prevent any
other WH_MSGFILTER hook from operating. Because
this hook is installed only as a system-wide hook, if a zero is
returned, it means that no WH_MSGFILTER hooks will
be called from within any thread. This could cause other applications
that rely on these hooks to fail.
Some additional MSGF_ messages are defined in
Winuser.h, but this hook currently is not
implementing them. These messages are:
Public Const MSGF_MAINLOOP = 8 'Not used with SysMsgFilter Hook Public Const MSGF_MAX = 8 'Not used with SysMsgFilter Hook Public Const MSGF_MESSAGEBOX = 1 'Not used with SysMsgFilter Hook Public Const MSGF_MOVE = 3 'Not used with SysMsgFilter Hook Public Const MSGF_SIZE = 4 'Not used with SysMsgFilter Hook Public Const MSGF_USER = 4096 'Not used with SysMsgFilter Hook Public Const MSGF_NEXTWINDOW = 6 'Not used with SysMsgFilter Hook
Even though this hook intercepts a subset of the messages that hooks
such as WH_CALLWNDPROC or
WH_CALLWNDPROCRET intercept, you should still watch how this hook ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access