Caveats
Once again, performance might be an issue with the use of the
WH_MOUSE
or WH_MOUSE_LL
hook,
especially with system-wide and low-level mouse hooks. You should use
these hooks judiciously. For more information on the problems with
low-level hooks, refer to Section 12.6 of Chapter 12.
When using the low-level mouse hook (WH_MOUSE_LL
),
note that the debug hook cannot receive the input to this hook before
the hook is called. The debug hook works normally with the mouse hook
(WH_MOUSE
). The debug hook is described in Chapter 21.
A registry key is associated with low-level hooks, such as
WH_MOUSE_LL
and WH_KEYBOARD_LL
(see Chapter 12). The numeric registry value
LowLevelHooksTimeout
is located in the following
registry key:
HKEY_CURRENT_USER\Control Panel\Desktop
This value controls the timeout period in milliseconds for all low-level hooks. If the filter function for a low-level hook does not return within this time span, the system will call the next low-level hook in the chain.
Although all 32-bit and 64-bit operating systems support the
WH_MOUSE
hook, all do not support the
WH_MOUSE_LL
hook. The
WH_MOUSE_LL
hook is found only in Windows NT
(Service Pack 3 or higher) and Windows 2000; it is not found in
Windows 9x.
As one final caution, there is a bug when using the mouse hooks from within a VB user control. Article Q238672 in the Microsoft Developer Network (MSDN) details the bug and how to work around it (Visual Studio 6, Service Pack 4 solves this problem).
Get Subclassing and Hooking with Visual Basic now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.