Esempio n. 1
0
        protected override unsafe void WndProc(ref Message m)
        {
            if (m.Msg == _wmShellHook)
            {
                switch ((User32.ShellEvents)m.WParam)
                {
                case User32.ShellEvents.HSHELL_WINDOWCREATED:
                    if (IsAppWindow(m.LParam))
                    {
                        OnWindowCreated(m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_WINDOWDESTROYED:
                    if (WindowDestroyed != null)
                    {
                        WindowDestroyed(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_ACTIVATESHELLWINDOW:
                    if (ActivateShellWindow != null)
                    {
                        ActivateShellWindow(this, IntPtr.Zero);
                    }
                    break;

                case User32.ShellEvents.HSHELL_WINDOWACTIVATED:
                    if (WindowActivated != null)
                    {
                        WindowActivated(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_GETMINRECT:
                    if (GetMinRect != null)
                    {
                        SHELLHOOKINFO *ptr = (SHELLHOOKINFO *)m.LParam.ToPointer();
                        GetMinRect(this, ptr);
                    }
                    break;

                case User32.ShellEvents.HSHELL_REDRAW:
                    if (Redraw != null)
                    {
                        Redraw(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_TASKMAN:
                    if (Taskman != null)
                    {
                        Taskman(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_LANGUAGE:
                    if (Language != null)
                    {
                        Language(this, IntPtr.Zero);
                    }
                    break;

                case User32.ShellEvents.HSHELL_SYSMENU:
                    if (Sysmenu != null)
                    {
                        Sysmenu(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_ENDTASK:
                    if (EndTask != null)
                    {
                        EndTask(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_ACCESSIBILITYSTATE:
                    if (Accessibilitystate != null)
                    {
                        Accessibilitystate(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_APPCOMMAND:
                    if (Appcommand != null)
                    {
                        throw new NotSupportedException("APPCOMMAND event currently not supported by shellhook");
                    }
                    break;

                case User32.ShellEvents.HSHELL_WINDOWREPLACED:
                    if (WindowReplaced != null)
                    {
                        WindowReplaced(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_WINDOWREPLACING:
                    if (WindowReplacing != null)
                    {
                        WindowReplacing(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_FLASH:
                    if (Flash != null)
                    {
                        Flash(this, m.LParam);
                    }
                    break;

                case User32.ShellEvents.HSHELL_RUDEAPPACTIVATED:
                    if (RudeAppActivated != null)
                    {
                        RudeAppActivated(this, m.LParam);
                    }
                    break;

                default:
                    break;
                }
            }
            base.WndProc(ref m);
        }
Esempio n. 2
0
 public ShellHookInfoEventArgs(IntPtr lpShellHookInfo)
 {
     this.lpShellHookInfo = (SHELLHOOKINFO *)lpShellHookInfo;
 }