private WindowHookProc _hookProc; // Keep a reference to prevent garbage collection. public WindowHook(WindowHookType type) { _hookProc = new WindowHookProc(HookProc); _handle = SetWindowsHookEx( (int)type, _hookProc, IntPtr.Zero, AppDomain.GetCurrentThreadId() ); }