/// <summary> /// Hook install method. /// </summary> public static void InstallHook() { if (IsHookInstalled) { return; } hModule = Marshal.GetHINSTANCE(AppDomain.CurrentDomain.GetAssemblies()[0].GetModules()[0]); hookDel = new API.HookProc(HookProcFunction); if (localHook) { hHook = API.SetWindowsHookEx(API.HookType.WH_KEYBOARD, hookDel, IntPtr.Zero, AppDomain.CurrentDomain.Id); } else { hHook = API.SetWindowsHookEx(API.HookType.WH_KEYBOARD_LL, hookDel, hModule, 0); } if (hHook != IntPtr.Zero) { hookInstall = true; } else { throw new Win32Exception("Can't install low level keyboard hook!"); } }
/// <summary> /// Hook install method. /// </summary> public static void InstallHook() { if (IsHookInstalled) { return; } hModule = Marshal.GetHINSTANCE(AppDomain.CurrentDomain.GetAssemblies()[0].GetModules()[0]); hookDel = new API.HookProc(HookProcFunction); if (localHook) { hHook = API.SetWindowsHookEx(API.HookType.WH_MOUSE, hookDel, IntPtr.Zero, AppDomain.GetCurrentThreadId()); // Если подчеркивает необращай внимание, так надо. } else { hHook = API.SetWindowsHookEx(API.HookType.WH_MOUSE_LL, hookDel, hModule, 0); } if (hHook != IntPtr.Zero) { hookInstall = true; } else { throw new Win32Exception("Can't install low level keyboard hook!"); } }
/// <summary> /// 加载线程钩子 /// </summary> /// <param name="currentThreadId">目标线程id</param> public void Start(int currentThreadId) { //安装键盘钩子 if (hKeyboardHook == 0) { this.isThreadHook = true; KeyboardHookProcedure = new API.HookProc(KeyboardHookProc); hKeyboardHook = API.SetWindowsHookEx(API.WH_KEYBOARD, KeyboardHookProcedure, (IntPtr)0, currentThreadId); if (hKeyboardHook == 0) { Stop(); throw new Exception("加载钩子失败."); } } }
/// <summary> /// 加载钩子 /// </summary> public void Start() { //安装键盘钩子 if (hKeyboardHook == 0) { KeyboardHookProcedure = new API.HookProc(KeyboardHookProc); Module module = Assembly.GetExecutingAssembly().GetModules()[0]; IntPtr hIntance = API.GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName); hKeyboardHook = API.SetWindowsHookEx(API.WH_KEYBOARD_LL, KeyboardHookProcedure, hIntance /*Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0])*/, 0); if (hKeyboardHook == 0) { Stop(); throw new Exception("加载钩子失败."); } } }
/// <summary> /// 开始安装线程钩子 /// </summary> /// <param name="currentThreadId">线程Id</param> public void Start(int currentThreadId) { //安装鼠标钩子 if (hMouseHook == 0) { //生成一个HookProc的实例. MouseHookProcedure = new API.HookProc(MouseHookProc); hMouseHook = API.SetWindowsHookEx(API.WH_MOUSE, MouseHookProcedure, (IntPtr)0, currentThreadId); //如果装置失败停止钩子 if (hMouseHook == 0) { Stop(); throw new Exception("安装钩子失败."); } } }
/// <summary> /// 开始安装全局钩子 /// </summary> public void StartForWindow(int windowHandler) { _windowhandler = windowHandler; //安装鼠标钩子 if (hMouseHook == 0) { //生成一个HookProc的实例. MouseHookProcedure = new API.HookProc(MouseHookProc); Module module = Assembly.GetExecutingAssembly().GetModules()[0]; IntPtr hIntance = API.GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName); hMouseHook = API.SetWindowsHookEx(API.WH_GETMESSAGE, MouseHookProcedure, hIntance, WayControls.Windows.API.GetCurrentThreadId()); //如果装置失败停止钩子 if (hMouseHook == 0) { Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); Stop(); throw new Exception("安装钩子失败."); } } }
/// <summary> /// Hook install method. /// </summary> private static void InstallHook() { if (IsHookInstalled) { return; } hModule = Marshal.GetHINSTANCE(Assembly.GetEntryAssembly().ManifestModule); hookDel = new API.HookProc(HookProcFunction); hHook = API.SetWindowsHookEx(API.HookType.WH_MOUSE_LL, hookDel, hModule, 0); if (hHook != IntPtr.Zero) { hookInstall = true; } else { throw new Win32Exception("Can't install low level keyboard hook!"); } }
/// <summary> /// Hook install method. /// </summary> public static void InstallHook() { if (IsHookInstalled) return; hModule = Marshal.GetHINSTANCE(AppDomain.CurrentDomain.GetAssemblies()[0].GetModules()[0]); hookDel = new API.HookProc(HookProcFunction); if (localHook) hHook = API.SetWindowsHookEx(API.HookType.WH_KEYBOARD, hookDel, IntPtr.Zero, AppDomain.GetCurrentThreadId()); else hHook = API.SetWindowsHookEx(API.HookType.WH_KEYBOARD_LL, hookDel, hModule, 0); if (hHook != IntPtr.Zero) hookInstall = true; else throw new Win32Exception("Can't install low level keyboard hook!"); }