Пример #1
0
        /// <summary>
        ///     Fill ALL the information of the InteropWindow
        /// </summary>
        /// <param name="interopWindow">InteropWindow</param>
        /// <param name="retrieveSettings">InteropWindowRetrieveSettings to specify which information is retrieved and what not</param>
        /// <returns>IInteropWindow for fluent calls</returns>
        public static IInteropWindow Fill(this IInteropWindow interopWindow, InteropWindowRetrieveSettings retrieveSettings = InteropWindowRetrieveSettings.CacheAllAutoCorrect)
        {
            if ((retrieveSettings & InteropWindowRetrieveSettings.Children) != 0 && (retrieveSettings & InteropWindowRetrieveSettings.ZOrderedChildren) != 0)
            {
                throw new ArgumentException("Can't have both Children & ZOrderedChildren", nameof(retrieveSettings));
            }
            var forceUpdate = (retrieveSettings | InteropWindowRetrieveSettings.ForceUpdate) != 0;
            var autoCorrect = (retrieveSettings | InteropWindowRetrieveSettings.AutoCorrectValues) != 0;

            if ((retrieveSettings & InteropWindowRetrieveSettings.Info) != 0)
            {
                interopWindow.GetInfo(forceUpdate, autoCorrect);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Caption) != 0)
            {
                interopWindow.GetCaption(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Classname) != 0)
            {
                interopWindow.GetClassname(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.ProcessId) != 0)
            {
                interopWindow.GetProcessId(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Parent) != 0)
            {
                interopWindow.GetParent(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Visible) != 0)
            {
                interopWindow.IsVisible(forceUpdate);
            }
            if ((retrieveSettings | InteropWindowRetrieveSettings.Maximized) != 0)
            {
                interopWindow.IsMaximized(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Minimized) != 0)
            {
                interopWindow.IsMinimized(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.ScrollInfo) != 0)
            {
                interopWindow.GetWindowScroller(forceUpdate: forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Children) != 0)
            {
                interopWindow.GetChildren(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.ZOrderedChildren) != 0)
            {
                interopWindow.GetZOrderedChildren(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Placement) != 0)
            {
                interopWindow.GetPlacement(forceUpdate);
            }
            if ((retrieveSettings & InteropWindowRetrieveSettings.Text) != 0)
            {
                interopWindow.GetText(forceUpdate);
            }
            return(interopWindow);
        }
Пример #2
0
        /// <inheritdoc />
        public StringBuilder Dump(InteropWindowRetrieveSettings retrieveSettings = InteropWindowRetrieveSettings.CacheAll, StringBuilder dump = null, string indentation = "")
        {
            this.Fill(retrieveSettings);

            dump = dump ?? new StringBuilder();
            dump.AppendLine($"{indentation}{nameof(Handle)}={Handle}");
            if ((retrieveSettings & InteropWindowRetrieveSettings.Classname) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(Classname)}={Classname}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Caption) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(Caption)}={Caption}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Text) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(Text)}={Text}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Info) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(Info)}={Info}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Maximized) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(IsMaximized)}={IsMaximized}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Minimized) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(IsMinimized)}={IsMinimized}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Visible) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(IsVisible)}={IsVisible}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Parent) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(Parent)}={Parent}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.ScrollInfo) != 0)
            {
                dump.AppendLine($"{indentation}{nameof(CanScroll)}={CanScroll}");
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.Children) != 0 && !HasParent)
            {
                foreach (var child in this.GetChildren())
                {
                    child.Dump(retrieveSettings, dump, indentation + "\t");
                }
            }

            if ((retrieveSettings & InteropWindowRetrieveSettings.ZOrderedChildren) == 0)
            {
                return(dump);
            }

            if (HasParent)
            {
                return(dump);
            }

            foreach (var child in this.GetZOrderedChildren())
            {
                child.Dump(retrieveSettings, dump, indentation + "\t");
            }

            return(dump);
        }