Exemple #1
0
        /// <summary>
        /// Set up the hook into Windows
        /// </summary>
        protected void Hook()
        {
            if (m_hook == IntPtr.Zero)
            {
                // We have to store the HookProc, so that it is not garbage collected during runtime
                m_hookedProc = HookProc;

                // need instance handle to module to create a system-wide hook
                IntPtr instance = WinAPI.LoadLibrary("User32");
                m_hook = SetWindowsHookEx(WinAPI.HookType.WH_KEYBOARD_LL, m_hookedProc, instance, 0);
                m_hookedAsync = new KeyboardHookAsync(KeyCallback);
            }
        }
Exemple #2
0
        /// <summary>
        /// Unhook from windows
        /// </summary>
        public void UnHook()
        {
            if (m_hook != IntPtr.Zero)
            {
                WinAPI.UnhookWindowsHookEx(m_hook);
                m_hook = IntPtr.Zero;

                // clear the forced references for GC
                m_hookedAsync = null;
                m_hookedProc = null;
            }
        }