/// <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); }
/// <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); }