public void Start(bool InstallMouseHook, bool InstallKeyboardHook) { if (this.hMouseHook == 0 && InstallMouseHook) { UserActivityHook.MouseHookProcedure = new UserActivityHook.HookProc(this.MouseHookProc); this.hMouseHook = UserActivityHook.SetWindowsHookEx(14, UserActivityHook.MouseHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0); if (this.hMouseHook == 0) { int errorCode = Marshal.GetLastWin32Error(); this.Stop(true, false, false); throw new Win32Exception(errorCode); } } if (this.hKeyboardHook == 0 && InstallKeyboardHook) { UserActivityHook.KeyboardHookProcedure = new UserActivityHook.HookProc(this.KeyboardHookProc); this.hKeyboardHook = UserActivityHook.SetWindowsHookEx(13, UserActivityHook.KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0); if (this.hKeyboardHook == 0) { int errorCode = Marshal.GetLastWin32Error(); this.Stop(false, true, false); throw new Win32Exception(errorCode); } } }
private static extern int SetWindowsHookEx(int idHook, UserActivityHook.HookProc lpfn, IntPtr hMod, int dwThreadId);