callnexthookex (user32)
Last changed: -65.216.74.168

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern int CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam,
   IntPtr lParam);

// overload for use with LowLevelKeyboardProc
[DllImport("user32.dll")]
static extern int CallNextHookEx(IntPtr hhk, int nCode, WM wParam, [In]KBDLLHOOKSTRUCT lParam);

// overload for use with LowLevelMouseProc
[DllImport("user32.dll")]
static extern int CallNextHookEx(IntPtr hhk, int nCode, WM wParam, [In]MSLLHOOKSTRUCT lParam);

VB Signature:

<DllImport("user32.dll")> _
Private Shared Function CallNextHookEx(ByVal hhk As IntPtr, ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
End Function

' overload for use with LowLevelKeyboardProc
<DllImport("user32.dll")> _
Private Shared Function CallNextHookEx(ByVal hhk As IntPtr, ByVal nCode As Integer, ByVal wParam As WindowsMessages, <[In]()> ByVal lParam As KBDLLHOOKSTRUCT) As Integer
End Function

' overload for use with LowLevelMouseProc
<DllImport("user32.dll")> _
Private Shared Function CallNextHookEx(ByVal hhk As IntPtr, ByVal nCode As Integer, ByVal wParam As WindowsMessages, <[In]()> ByVal lParam As MSLLHOOKSTRUCT) As Integer
End Function

User-Defined Types:

WindowsMessages,KBDLLHOOKSTRUCT,MSLLHOOKSTRUCT

Notes:

hhk is ignored, so you can use IntPtr.Zero

I think the signatures are wrong. The return is IntPtr, not int. It is LRESULT in C++.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Alternative Managed API:

The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a Hook class and subclasses for Journal hooks, Message hooks and Low-Level hooks.

See
Documentation