SetWindowsHookEx (user32)
Last changed: -

Installs a hook to monitor certain types of events.

C# Signature:

[DllImport("user32.dll")] public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

Alternative Managed API:

The ManagedWindowsApi project ( provides a Hook class and subclasses for Journal hooks, Message hooks and Low-Level hooks.


SetWindowsHookEx on MSDN

MSDN example of a mouse hook in C#:;en-us;318804#3

MSDN article on hooks in .NET:

MSDN article on KeyboardProc:

Stephen Toub entry on low-level keyboard hook in C#:

Stephen Toub entry on low-level mouse hook on C#: