예제 #1
0
 protected void OnHookInvoked(HookEventArgs e)
 {
     if (HookInvoked != null)
     {
         HookInvoked(this, e);
     }
 }
예제 #2
0
        // Default filter function
        public int CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
        {
            if (code < 0)
            {
                return(CallNextHookEx(m_hhook, code, wParam, lParam));
            }

            // Let clients determine what to do
            HookEventArgs e = new HookEventArgs();

            e.HookCode = code;
            e.wParam   = wParam;
            e.lParam   = lParam;
            OnHookInvoked(e);

            // Yield to the next hook in the chain
            return(CallNextHookEx(m_hhook, code, wParam, lParam));
        }
예제 #3
0
 protected void OnHookInvoked(HookEventArgs e)
 {
     if (HookInvoked != null)
         HookInvoked(this, e);
 }
예제 #4
0
        // Default filter function
        public int CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
        {
            if (code < 0)
                return CallNextHookEx(m_hhook, code, wParam, lParam);

            // Let clients determine what to do
            HookEventArgs e = new HookEventArgs();
            e.HookCode = code;
            e.wParam = wParam;
            e.lParam = lParam;
            OnHookInvoked(e);

            // Yield to the next hook in the chain
            return CallNextHookEx(m_hhook, code, wParam, lParam);
        }
예제 #5
0
        // Windows hook event handler
        private void HookEventHandler(object sender, HookEventArgs e)
        {
            if (InRefreshingActiveWindow)
                return;

            Win32.Msgs msg = (Win32.Msgs)Marshal.ReadInt32(e.lParam, IntPtr.Size * 3);

            if (msg == Win32.Msgs.WM_KILLFOCUS)
            {
                IntPtr wParam = Marshal.ReadIntPtr(e.lParam, IntPtr.Size * 2);
                DockPane pane = GetPaneFromHandle(wParam);
                if (pane == null)
                    User32.PostMessage(this.Handle, WM_REFRESHACTIVEWINDOW, 0, 0);
            }
            else if (msg == Win32.Msgs.WM_SETFOCUS)
                User32.PostMessage(this.Handle, WM_REFRESHACTIVEWINDOW, 0, 0);
        }