private static int GlobalHookCallback(HookType Type, int code, IntPtr wParam, IntPtr lParam) { switch (Type) { case HookType.WH_KEYBOARD_LL: { if (!KeyboardHooks.Dispatch(code, wParam, lParam)) { return(1); } break; } case HookType.WH_MOUSE_LL: { if (!MouseHooks.Dispatch(code, wParam, lParam)) { return(1); } break; } default: break; } return(User32.CallNextHookEx(IntPtr.Zero, code, wParam, lParam)); }
public static void Uninstall() { lock (HookContainerLock) { KeyboardHooks.Remove(); MouseHooks.Remove(); foreach (var Handle in HooksHandlesByType) { User32.UnhookWindowsHookEx(Handle.Value); } HooksHandlesByType.Clear(); } }