/// <summary> /// 向Windows註冊Hook。 /// </summary> private static void Install() { if (m_HookHandle == 0) { Process curProcess = Process.GetCurrentProcess(); ProcessModule curModule = curProcess.MainModule; m_HookProc = new Win32Native.Structures.HookProc(HookProc); m_HookHandle = Win32Native.Methods.SetWindowsHookEx(Win32Native.NativeContansts.WH_MOUSE_LL, m_HookProc, Win32Native.Methods.GetModuleHandle(curModule.ModuleName), 0); curModule.Dispose(); curProcess.Dispose(); m_DoubleClickTimer = new System.Windows.Forms.Timer { Interval = (int)Win32Native.Methods.GetDoubleClickTime(), Enabled = false }; m_DoubleClickTimer.Tick += DoubleClickTimeElapsed; GlobalMouseDown += OnMouseDown; if (m_HookHandle == 0) { throw new Exception("Install Hook Faild."); } } }
/// <summary> /// 向Windows註冊Hook。 /// </summary> private static void Install() { if (m_HookHandle == 0) { Process curProcess = Process.GetCurrentProcess(); ProcessModule curModule = curProcess.MainModule; m_HookProc = new Win32Native.Structures.HookProc(HookProc); m_HookHandle = Win32Native.Methods.SetWindowsHookEx(Win32Native.NativeContansts.WH_KEYBOARD_LL, m_HookProc, Win32Native.Methods.GetModuleHandle(curModule.ModuleName), 0); curModule.Dispose(); curProcess.Dispose(); if (m_HookHandle == 0) { throw new Exception("Install Hook Faild."); } } }
public static extern int SetWindowsHookEx(int idHook, Win32Native.Structures.HookProc lpfn, IntPtr hInstance, int threadId);