private void StartHookMessages() { GC.KeepAlive(this); lock(this) { if (_mouseHookHandle != IntPtr.Zero) return; if (_thisProcessID == 0) Win32Calls.GetWindowThreadProcessId(new HandleRef(_control, _control.Handle), out _thisProcessID); MouseHookObject obj = new MouseHookObject(this); Win32Calls.HookProc mouseHookProc = new Win32Calls.HookProc(obj.Callback); _mouseHookRoot = GCHandle.Alloc(mouseHookProc); _mouseHookHandle = Win32Calls.SetWindowsHookEx(Win32Calls.WH_MOUSEPROC, mouseHookProc, (IntPtr)0, Win32Calls.GetCurrentThreadId()); } }
private void StartHookMessages() { GC.KeepAlive(this); lock (this) { if (_mouseHookHandle != IntPtr.Zero) { return; } if (_thisProcessID == 0) { Win32Calls.GetWindowThreadProcessId(new HandleRef(_control, _control.Handle), out _thisProcessID); } MouseHookObject obj = new MouseHookObject(this); Win32Calls.HookProc mouseHookProc = new Win32Calls.HookProc(obj.Callback); _mouseHookRoot = GCHandle.Alloc(mouseHookProc); _mouseHookHandle = Win32Calls.SetWindowsHookEx(Win32Calls.WH_MOUSEPROC, mouseHookProc, (IntPtr)0, Win32Calls.GetCurrentThreadId()); } }
private void HookMouse() { lock (this) { if (_mouseHookHandle != IntPtr.Zero) { return; } if (ThisProcessId == 0) { NativeMethods.GetWindowThreadProcessId(new HandleRef(_control, _control.Handle), out ThisProcessId); } NativeMethods.HookProc hook = new MouseHookObject(this).Callback; _mouseHookRoot = GCHandle.Alloc(hook); _mouseHookHandle = NativeMethods.SetWindowsHookEx( NativeMethods.WH_MOUSE, hook, NativeMethods.NullHandleRef, NativeMethods.GetCurrentThreadId()); Debug.Assert(_mouseHookHandle != IntPtr.Zero, "Failed to install mouse hook"); } }
private void HookMouse() { GC.KeepAlive(this); lock (this) { if (this.mouseHookHandle == IntPtr.Zero) { if (this.thisProcessID == 0) { System.Windows.Forms.SafeNativeMethods.GetWindowThreadProcessId(new HandleRef(this.control, this.control.Handle), out this.thisProcessID); } MouseHookObject obj1 = new MouseHookObject(this); System.Windows.Forms.NativeMethods.HookProc proc = new System.Windows.Forms.NativeMethods.HookProc(obj1.Callback); this.mouseHookRoot = GCHandle.Alloc(proc); this.mouseHookHandle = System.Windows.Forms.UnsafeNativeMethods.SetWindowsHookEx(7, proc, System.Windows.Forms.NativeMethods.NullHandleRef, System.Windows.Forms.SafeNativeMethods.GetCurrentThreadId()); } } }