Ejemplo n.º 1
0
            internal WindowChangedEventArgs(IntPtr windowHandle, WinEventHook.WinEvent winEvent)
            {
                WindowHandle = windowHandle;
                switch (winEvent)
                {
                case WinEventHook.WinEvent.EVENT_OBJECT_CREATE:
                    Type = ChangeType.Create;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_DESTROY:
                    Type = ChangeType.Destroy;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_SHOW:
                    Type = ChangeType.Show;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_HIDE:
                    Type = ChangeType.Hide;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_FOCUS:
                    Type = ChangeType.Focus;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_LOCATIONCHANGE:
                    Type = ChangeType.LocationChange;
                    break;

                default:
                    throw new ArgumentException("Unexpected WinEvent type", nameof(winEvent));
                }
            }
Ejemplo n.º 2
0
 internal static bool IsSupportedWinEvent(WinEventHook.WinEvent winEvent)
 {
     return(winEvent == WinEventHook.WinEvent.EVENT_OBJECT_CREATE ||
            winEvent == WinEventHook.WinEvent.EVENT_OBJECT_DESTROY ||
            winEvent == WinEventHook.WinEvent.EVENT_OBJECT_SHOW ||
            winEvent == WinEventHook.WinEvent.EVENT_OBJECT_HIDE ||
            winEvent == WinEventHook.WinEvent.EVENT_OBJECT_FOCUS ||
            winEvent == WinEventHook.WinEvent.EVENT_OBJECT_LOCATIONCHANGE);   // Only for the on-demand hook
 }
Ejemplo n.º 3
0
            internal WindowChangedEventArgs(IntPtr windowHandle, WinEventHook.WinEvent winEvent, WinEventHook.WinEventObjectId objectId)
            {
                WindowHandle = windowHandle;
                switch (winEvent)
                {
                case WinEventHook.WinEvent.EVENT_OBJECT_CREATE:
                    Type = ChangeType.Create;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_DESTROY:
                    Type = ChangeType.Destroy;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_SHOW:
                    Type = ChangeType.Show;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_HIDE:
                    Type = ChangeType.Hide;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_FOCUS:
                    Type = ChangeType.Focus;
                    break;

                case WinEventHook.WinEvent.EVENT_OBJECT_LOCATIONCHANGE:
                    Type = ChangeType.LocationChange;
                    break;

                default:
                    // throw new ArgumentException("Unexpected WinEvent type", nameof(winEvent));
                    break;
                }
                switch (objectId)
                {
                case WinEventHook.WinEventObjectId.OBJID_SELF:
                    ObjectId = ChangeObjectId.Self;
                    break;

                case WinEventHook.WinEventObjectId.OBJID_CLIENT:
                    ObjectId = ChangeObjectId.Client;
                    break;

                case WinEventHook.WinEventObjectId.OBJID_CARET:
                    ObjectId = ChangeObjectId.Caret;
                    break;

                default:
                    //Debug.Fail("Unexpected ObjectId");
                    ObjectId = ChangeObjectId.Unknown;
                    break;
                }
            }
Ejemplo n.º 4
0
        void WindowStateChange(IntPtr hWinEventHook, WinEventHook.WinEvent eventType, IntPtr hWnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime)
        {
            // This runs on the main application thread.
            Debug.Print("### Thread receiving WindowStateChange: " + Thread.CurrentThread.ManagedThreadId);
            switch (Win32Helper.GetClassName(hWnd))
            {
            case _classMain:
                //if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_FOCUS ||
                //    eventType == WinEventHook.WinEvent.EVENT_OBJECT_SHOW)
            {
                Debug.Print("MainWindow update: " + hWnd.ToString("X") + ", EventType: " + eventType);
                UpdateMainWindow(hWnd);
            }
                if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_DESTROY)
                {
                }
                break;

            case _classPopupList:
                if (PopupListWindow == IntPtr.Zero &&
                    (eventType == WinEventHook.WinEvent.EVENT_OBJECT_CREATE ||
                     eventType == WinEventHook.WinEvent.EVENT_OBJECT_SHOW))
                {
                    PopupListWindow = hWnd;
                    PopupListWindowChanged(this, EventArgs.Empty);
                }
                else
                {
                    Debug.Assert(PopupListWindow == hWnd);
                }
                break;

            case _classInCellEdit:

                Debug.Print("InCell Window update: " + hWnd.ToString("X") + ", EventType: " + eventType + ", idChild: " + idChild);
                if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_CREATE ||
                    eventType == WinEventHook.WinEvent.EVENT_OBJECT_SHOW)
                {
                    InCellEditWindow = hWnd;
                    InCellEditWindowChanged(this, EventArgs.Empty);
                }
                else if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_HIDE)
                {
                    InCellEditWindow = IntPtr.Zero;
                    InCellEditWindowChanged(this, EventArgs.Empty);
                }
                else if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_FOCUS)
                {
                    InCellEditFocused(this, EventArgs.Empty);
                }
                break;

            case _classFormulaBar:
                Debug.Print("FormulaBar Window update: " + hWnd.ToString("X") + ", EventType: " + eventType + ", idChild: " + idChild);
                if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_CREATE ||
                    eventType == WinEventHook.WinEvent.EVENT_OBJECT_SHOW)
                {
                    FormulaBarWindow = hWnd;
                    FormulaBarWindowChanged(this, EventArgs.Empty);
                }
                else if (eventType == WinEventHook.WinEvent.EVENT_OBJECT_FOCUS)
                {
                    FormulaBarFocused(this, EventArgs.Empty);
                }
                break;

            default:
                //InCellEditWindowChanged(this, EventArgs.Empty);
                break;
            }
        }