Example #1
0
        private void cbtHook_Callback(int nCode, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            switch ((HCBT)nCode)
            {
            case HCBT.SetFocus:
                // wParam
                // Определяет дескриптор окна, получающего фокус клавиатуры.
                // lParam
                // Определяет дескриптор окна, теряющего фокус клавиатуры.
                //e.HWndGaining = (IntPtr)wParam;
                //e.HWndLosing = lParam;
                if (SetFocusCallback != null)
                {
                    SetFocusCallback.Invoke(wParam, lParam, ref handled);
                }
                break;

            case HCBT.Activate:
                // wParam
                // Определяет дескриптор окна, которое будет активировано
                // lParam
                // Specifies a long pointer to a CBTACTIVATESTRUCT structure containing the handle
                // to the active window and specifies whether the activation is changing because of a mouse click.
                if (ActivateCallback != null)
                {
                    CBTActivateStruct cbtActivateStruct =
                        (CBTActivateStruct)Marshal.PtrToStructure(lParam, typeof(CBTActivateStruct));
                    ActivateCallback.Invoke(wParam, cbtActivateStruct.fMouse, ref handled);
                }
                break;

            case HCBT.SysCommand:
                // wParam
                // Определяет значение системной команды (SC_)
                // lParam
                // low-order = X
                // high-order = Y | This parameter is –1 if the command is chosen using a system accelerator, or zero if using a mnemonic.
                switch ((SysCommands)wParam)
                {
                case SysCommands.SC_TASKLIST:
                    //e.Location = new System.Drawing.Point((int)lParam & 0xFFFF, (int)lParam >> 16);
                    if (TaskListCallback != null)
                    {
                        TaskListCallback.Invoke((int)lParam, ref handled);
                    }
                    break;
                }
                break;
            }
        }
Example #2
0
 public static void SetFocus <TObject>(TObject objCtrl, Form winf) where TObject : System.Windows.Forms.Control
 {
     if (objCtrl.InvokeRequired)
     {
         SetFocusCallback d = new SetFocusCallback(SetFocus);
         if (winf.IsDisposed)
         {
             return;
         }
         winf.Invoke(d, new object[] { objCtrl, winf });
     }
     else
     {
         objCtrl.Focus();
     }
 }
Example #3
0
 public static void SetFocus <TObject>(TObject objCtrl, Control winf) where TObject : Control
 {
     if (objCtrl.InvokeRequired)
     {
         SetFocusCallback method = new SetFocusCallback(CallCtrlWithThreadSafety.SetFocus <Control>);
         try
         {
             objCtrl.Invoke(method, new object[] { objCtrl, winf });
         }
         catch
         {
             try
             {
                 objCtrl.Focus();
             }
             catch { }
         }
     }
     else
     {
         objCtrl.Focus();
     }
 }