ExcelDna.IntelliSense.WindowWatcher._windowStateChangeHook_WinEventReceived C# (CSharp) Метод

_windowStateChangeHook_WinEventReceived() приватный Метод

private _windowStateChangeHook_WinEventReceived ( object sender, WinEventHook e ) : void
sender object
e WinEventHook
Результат void
        void _windowStateChangeHook_WinEventReceived(object sender, WinEventHook.WinEventArgs e)
        {
            if (!WindowChangedEventArgs.IsSupportedWinEvent(e.EventType))
                return;

            var className = Win32Helper.GetClassName(e.WindowHandle);
            if (e.EventType == WinEventHook.WinEvent.EVENT_OBJECT_FOCUS)
            {
                // Might raise change event for Unfocus
                if (!UpdateFocus(e.WindowHandle, className))
                {
                    // We already have the right focus
                    return;
                }
            }

            // Debug.Print("### Thread receiving WindowStateChange: " + Thread.CurrentThread.ManagedThreadId);
            switch (className)
            {
                //case _sheetWindowClass:
                //    if (e.EventType == WinEventHook.WinEvent.EVENT_OBJECT_SHOW)
                //    {
                //        // Maybe a new workbook is on top...
                //        // Note that there is also an EVENT_OBJECT_PARENTCHANGE (which we are not subscribing to at the moment
                //    }
                //    break;
                case _popupListClass:
                    PopupListWindowChanged?.Invoke(this, new WindowChangedEventArgs(e.WindowHandle, e.EventType));
                    break;
                case _inCellEditClass:
                    InCellEditWindowChanged?.Invoke(this, new WindowChangedEventArgs(e.WindowHandle, e.EventType));
                    break;
                case _formulaBarClass:
                    FormulaBarWindowChanged?.Invoke(this, new WindowChangedEventArgs(e.WindowHandle, e.EventType));
                    break;
                case _excelToolTipClass:
                    ExcelToolTipWindowChanged?.Invoke(this, new WindowChangedEventArgs(e.WindowHandle, e.EventType));
                     break;
                //case _nuiDialogClass:
                //    // Debug.Print($"SelectDataSource {_selectDataSourceClass} Window update: {e.WindowHandle:X}, EventType: {e.EventType}, idChild: {e.ChildId}");
                //    if (e.EventType == WinEventHook.WinEvent.EVENT_OBJECT_CREATE)
                //    {
                //        // Get the name of this window - maybe ours or some other NUIDialog
                //        var windowTitle = Win32Helper.GetText(e.WindowHandle);
                //        if (windowTitle.Equals(_selectDataSourceTitle, StringComparison.OrdinalIgnoreCase))
                //        {
                //            SelectDataSourceWindow = e.WindowHandle;
                //            SelectDataSourceWindowChanged?.Invoke(this,
                //                new WindowChangedEventArgs { Type = WindowChangedEventArgs.ChangeType.Create });
                //        }
                //    }
                //    else if (SelectDataSourceWindow == e.WindowHandle && e.EventType == WinEventHook.WinEvent.EVENT_OBJECT_SHOW)
                //    {
                //        IsSelectDataSourceWindowVisible = true;
                //        SelectDataSourceWindowChanged?.Invoke(this,
                //                new WindowChangedEventArgs { Type = WindowChangedEventArgs.ChangeType.Create });
                //    }
                //    else if (SelectDataSourceWindow == e.WindowHandle && e.EventType == WinEventHook.WinEvent.EVENT_OBJECT_HIDE)
                //    {
                //        IsSelectDataSourceWindowVisible = false;
                //        SelectDataSourceWindowChanged?.Invoke(this, new WindowChangedEventArgs { Type = WindowChangedEventArgs.ChangeType.Hide });
                //    }
                //    else if (SelectDataSourceWindow == e.WindowHandle && e.EventType == WinEventHook.WinEvent.EVENT_OBJECT_DESTROY)
                //    {
                //        IsSelectDataSourceWindowVisible = false;
                //        SelectDataSourceWindow = IntPtr.Zero;
                //        SelectDataSourceWindowChanged?.Invoke(this, new WindowChangedEventArgs { Type = WindowChangedEventArgs.ChangeType.Destroy });
                //    }
                //    break;
                default:
                    //InCellEditWindowChanged(this, EventArgs.Empty);
                    break;
            }
        }