コード例 #1
0
ファイル: Dump.cs プロジェクト: lanicon/Gu.Wpf.UiAutomation
        private static void PropertiesAndPatterns(AutomationElement element, IndentedTextWriter writer, bool all = true)
        {
            if (all)
            {
                foreach (var pattern in element.GetSupportedPatterns())
                {
                    writer.WriteLine(pattern.ProgrammaticName);
                    writer.Indent++;
                    var currentPattern = element.GetCurrentPattern(pattern);
                    writer.WriteLine(currentPattern);
                    if (currentPattern.GetType().GetProperty("Current") is { } currentProperty&&
                        currentProperty.GetValue(currentPattern) is { } value)
                    {
                        foreach (var property in value.GetType().GetProperties())
                        {
                            writer.WriteLine($"{property.Name} {property.GetValue(value) ?? "null"}");
                        }
                    }

                    writer.Indent--;
                }

                foreach (var property in element.GetSupportedProperties().OrderBy(x => x.ProgrammaticName))
                {
                    writer.WriteLine($"{property.ProgrammaticName.TrimStart("AutomationElementIdentifiers.").TrimEnd("Property")} {element.GetCurrentPropertyValue(property) ?? "null"}");
                }

                writer.WriteLine();
            }
            else
            {
                var info = element.Current;
                writer.WriteLine($"ControlType: {info.ControlType.ProgrammaticName} (LocalizedControlType: {info.LocalizedControlType})");
                writer.WriteLine($"ClassName: {info.ClassName}");
                writer.WriteLine($"Name: {info.Name}");
                writer.WriteLine($"AutomationId: {info.AutomationId}");
                writer.WriteLine($"IsContentElement: {info.IsContentElement} IsControlElement: {info.IsControlElement}");
                writer.WriteLine($"Properties: {string.Join(", ", element.GetSupportedProperties().Select(x => x.ProgrammaticName.TrimStart("AutomationElementIdentifiers.").TrimEnd("Property")).OrderBy(x => x))}");
                writer.WriteLine($"Patterns: {string.Join(", ", element.GetSupportedPatterns().Select(x => x.ProgrammaticName.TrimEnd("Identifiers.Pattern").TrimEnd("Pattern")).OrderBy(x => x))}");
                writer.WriteLine();
            }
        }
コード例 #2
0
        private static void WritePattern(AutomationElement automationElement, StringBuilder stringBuilder, string displayPadding)
        {
            var availablePatterns = automationElement.GetSupportedPatterns();

            foreach (var automationPattern in availablePatterns)
            {
                WriteWithPadding(stringBuilder, automationPattern.ToString(), displayPadding);
            }

            stringBuilder.AppendLine();
        }