private void HookMouse() { GC.KeepAlive(this); // Locking 'this' here is ok since this is an internal class. lock (this) { if (_mouseHookHandle != IntPtr.Zero) { return; } if (_thisProcessId == 0) { User32.GetWindowThreadProcessId(_control, out _thisProcessId); } var hook = new User32.HOOKPROC(new MouseHookObject(this).Callback); _mouseHookRoot = GCHandle.Alloc(hook); _mouseHookHandle = User32.SetWindowsHookExW( User32.WH.MOUSE, hook, IntPtr.Zero, Kernel32.GetCurrentThreadId()); Debug.Assert(_mouseHookHandle != IntPtr.Zero, "Failed to install mouse hook"); Debug.WriteLineIf(CompModSwitches.DebugGridView.TraceVerbose, "DropDownHolder:HookMouse()"); } }
private void HookMouse() { Debug.Assert(s_adornerWindowList.Count > 0, "No AdornerWindow available to create the mouse hook"); lock (this) { if (_mouseHookHandle != IntPtr.Zero || s_adornerWindowList.Count == 0) { return; } if (_thisProcessID == 0) { AdornerWindow adornerWindow = s_adornerWindowList[0]; User32.GetWindowThreadProcessId(adornerWindow, out _thisProcessID); } var hook = new User32.HOOKPROC(MouseHookProc); _mouseHookRoot = GCHandle.Alloc(hook); _mouseHookHandle = User32.SetWindowsHookExW( User32.WH.MOUSE, hook, IntPtr.Zero, Kernel32.GetCurrentThreadId()); if (_mouseHookHandle != IntPtr.Zero) { _isHooked = true; } Debug.Assert(_mouseHookHandle != IntPtr.Zero, "Failed to install mouse hook"); } }
public void Start() { // Install Mouse Hook MouseHookProcedure = new User32.HOOKPROC(MouseHookProc); hMouseHook = User32.SetWindowsHookEx( User32.WH_MOUSE_LL, MouseHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0); if (IntPtr.Zero == hMouseHook) { //Common.Log("Error installing mouse hook: " + Marshal.GetLastWin32Error().ToString()); Stop(); } }
/// <summary> /// install the hook. quite easy /// </summary> private static void InstallHook() { if (s_hhook == IntPtr.Zero) { s_hook = new User32.HOOKPROC(new SendKeysHookProc().Callback); s_stopHook = false; s_hhook = User32.SetWindowsHookExW( User32.WH.JOURNALPLAYBACK, s_hook, Kernel32.GetModuleHandleW(null), 0); if (s_hhook == IntPtr.Zero) { throw new SecurityException(SR.SendKeysHookFailed); } } }
// // Private methods // #region private void AttachKeyboardHook() private void AttachKeyboardHook() { keyboardHook = new User32.HOOKPROC(KeyboardHookHandler); GC.KeepAlive(keyboardHook); hKeyboardHook = User32.SetWindowsHookEx( WindowsHookCode.WH_KEYBOARD_LL, keyboardHook, (int)Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly().GetModules()[0]), 0); if (hKeyboardHook == 0) { int errorCode = Marshal.GetLastWin32Error(); DetachKeyboardHook(true); throw new Win32Exception(errorCode); } }
private static void TestHook() { hookSupported = false; try { var hookProc = new User32.HOOKPROC(EmptyHookCallback); IntPtr hookHandle = User32.SetWindowsHookExW( User32.WH.JOURNALPLAYBACK, hookProc, Kernel32.GetModuleHandleW(null), 0); hookSupported = (hookHandle != IntPtr.Zero); if (hookHandle != IntPtr.Zero) { User32.UnhookWindowsHookEx(hookHandle); } } catch { // Ignore any exceptions to keep existing SendKeys behavior } }
public HookDemo() { _mouseHook = OnMouseHook; }
private void AttachKeyboardHook() { keyboardHook = new User32.HOOKPROC(KeyboardHookHandler); GC.KeepAlive(keyboardHook); hKeyboardHook = User32.SetWindowsHookEx( WindowsHookCode.WH_KEYBOARD_LL, keyboardHook, (int)Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly().GetModules()[0]), 0); if (hKeyboardHook == 0) { int errorCode = Marshal.GetLastWin32Error(); DetachKeyboardHook(true); throw new Win32Exception(errorCode); } }
public MouseHook(User32.HOOKPROC h) { this.HookProc = h; }
public KeyboardHookService(IMessageService messageService) { this.messageService = messageService; hookProc = HookCallback; }
public KeyboardHook(User32.HOOKPROC h) { this.HookProc = h; }
public MouseHookService(IMessageService messageService) { this.messageService = messageService; hookProc = HookCallback; }