Exemple #1
0
        /// <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!");
            }
        }
Exemple #2
0
        /// <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!");
            }
        }
Exemple #3
0
        /// <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("加载钩子失败.");
                }
            }
        }
Exemple #4
0
        /// <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("加载钩子失败.");
                }
            }
        }
Exemple #5
0
        /// <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("安装钩子失败.");
                }
            }
        }
Exemple #6
0
        /// <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("安装钩子失败.");
                }
            }
        }
Exemple #7
0
        /// <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!");
            }
        }
Exemple #8
0
        /// <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!");
        }