protected virtual void RemoveHooks() { ArrayList list = new ArrayList(); foreach (HookInfo h in HookHash.Values) { list.Add(h); } HookHash.Clear(); for (int n = 0; n < list.Count; n++) { RemoveHook(list[n] as HookInfo, true); } }
internal void RemoveHook(HookInfo hInfo, bool disposing) { if (hInfo.wndHookHandle != IntPtr.Zero) { UnhookWindowsHookEx(hInfo.wndHookHandle); hInfo.wndHookHandle = IntPtr.Zero; hInfo.wndHookProc = null; hInfo.getMessageHookHandle = IntPtr.Zero; hInfo.getMessageHookProc = null; UnhookWindowsHookEx(hInfo.mouseHookHandle); hInfo.mouseHookHandle = IntPtr.Zero; hInfo.mouseHookProc = null; HookHash.Remove(hInfo.ThreadId); } }