예제 #1
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);
    }
예제 #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
파일: DockPanel.cs 프로젝트: gpanayir/sffwk
    // Windows hook event handler
    private void HookEventHandler(object sender, HookEventArgs e) {
      if (InRefreshingActiveWindow)
        return;

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

      if (msg == 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 == Msgs.WM_SETFOCUS)
        User32.PostMessage(this.Handle, WM_REFRESHACTIVEWINDOW, 0, 0);
    }
예제 #4
0
 protected void OnHookInvoked(HookEventArgs e) {
   if (HookInvoked != null)
     HookInvoked(this, e);
 }