/// <summary>
/// Passes the hook information to the next hook procedure in the current hook chain. A hook procedure can call this
/// function either before or after processing the hook information.
/// <para>
/// See [ https://msdn.microsoft.com/en-us/library/windows/desktop/ms644974%28v=vs.85%29.aspx ] for more
/// information.
/// </para>
/// </summary>
/// <param name="hhk">C++ ( hhk [in, optional]. Type: HHOOK )<br />This parameter is ignored. </param>
/// <param name="nCode">
/// C++ ( nCode [in]. Type: int )<br />The hook code passed to the current hook procedure. The next
/// hook procedure uses this code to determine how to process the hook information.
/// </param>
/// <param name="wParam">
/// C++ ( wParam [in]. Type: WPARAM )<br />The wParam value passed to the current hook procedure. The
/// meaning of this parameter depends on the type of hook associated with the current hook chain.
/// </param>
/// <param name="lParam">
/// C++ ( lParam [in]. Type: LPARAM )<br />The lParam value passed to the current hook procedure. The
/// meaning of this parameter depends on the type of hook associated with the current hook chain.
/// </param>
/// <returns>
/// C++ ( Type: LRESULT )<br />This value is returned by the next hook procedure in the chain. The current hook
/// procedure must also return this value. The meaning of the return value depends on the hook type. For more
/// information, see the descriptions of the individual hook procedures.
/// </returns>
/// <remarks>
/// <para>
/// Hook procedures are installed in chains for particular hook types. <see cref="CallNextHookEx" /> calls the
/// next hook in the chain.
/// </para>
/// <para>
/// Calling CallNextHookEx is optional, but it is highly recommended; otherwise, other applications that have
/// installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call
/// <see cref="CallNextHookEx" /> unless you absolutely need to prevent the notification from being seen by other
/// applications.
/// </para>
/// </remarks>
[DllImport("user32.dll")]
static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam,
IntPtr lParam);
// overload for use with LowLevelKeyboardProc
[DllImport("user32.dll")]
static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, WM wParam, [In]KBDLLHOOKSTRUCT lParam);
// overload for use with LowLevelMouseProc
[DllImport("user32.dll")]
static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, WM wParam, [In]MSLLHOOKSTRUCT lParam);
<DllImport("user32.dll")> _
Private Shared Function CallNextHookEx(ByVal hhk As IntPtr, ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
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]()> ByRef lParam As KBDLLHOOKSTRUCT) As IntPtr
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]()> ByRef lParam As MSLLHOOKSTRUCT) As IntPtr
End Function
Public Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal ncode As Long, _
ByVal wParam As WindowsMessages, _
lParam As Any) As Long
' overload for use with LowLevelKeyboardProc
Public Declare Function CallNextHookExKbd Lib "user32" Alias "CallNextHookEx" _
(ByVal hHook As Long, _
ByVal ncode As Long, _
ByVal wParam As WindowsMessages, _
lParam As KBDLLHOOKSTRUCT) As Long
' overload for use with LowLevelMouseProc
Public Declare Function CallNextHookExMse Lib "user32" Alias "CallNextHookEx" _
(ByVal hHook As Long, _
ByVal ncode As Long, _
ByVal wParam As WindowsMessages, _
lParam As MSLLHOOKSTRUCT) As Long
WindowsMessages,KBDLLHOOKSTRUCT,MSLLHOOKSTRUCT
hhk is ignored, so you can use IntPtr.Zero
Please add some!
Please add some!
The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a Hook class and subclasses for Journal hooks, Message hooks and Low-Level hooks.