Кто-нибудь знает, как получить имя/значение элемента AutomationElement пользовательского типа управления? См. Изображение со ссылкой ниже. Я заинтересован в получении имени/значения выделенного AutomationElement, который Microsoft может получить с помощью инструмента Inspect. Я попытался проверить, поддерживает ли AutomationElement IAccessible, поскольку с помощью инструмента Inspect, поскольку IsLegacyIAccessiblePatternAvailableProperty является истинным. Мне не повезло со следующим фрагментом кода, и все, что у меня было, было пустой строкой для всех дочерних элементов AutomationElement элемента управления таблицей (родительский элемент выделенного элемента AutomationElement на изображении). Пожалуйста, порекомендуйте.Как получить имя/значение из настраиваемого элемента управления, например, инструмент «Проверка» от Microsoft?
AutomationElement sibling = TreeWalker.RawViewWalker.GetFirstChild(table);
while (sibling != null)
{
if ((Boolean)sibling.GetCurrentPropertyValue(AutomationElementIdentifiers.IsLegacyIAccessiblePatternAvailableProperty))
{
var pattern = ((LegacyIAccessiblePattern)sibling.GetCurrentPattern(LegacyIAccessiblePattern.Pattern));
var name = pattern.GetIAccessible().accValue;
//allChildren.Add(sibling);
if (((string)name).IndexOf(deviceId) != -1)
{
AutomationElement device = TreeWalker.RawViewWalker.GetPreviousSibling(sibling);
if (device != null)
{
checkBox = TreeWalker.RawViewWalker.GetPreviousSibling(device);
break;
}
}
}
sibling = TreeWalker.RawViewWalker.GetNextSibling(sibling);
}
http://i.stack.imgur.com/78I8g.png
Hansa, спасибо за ваш комментарий. Программа, которую я пытаюсь автоматизировать - это сторонняя программа, поэтому я не контролирую ее. Мне просто интересно, как Inspect удалось извлечь текст без наличия свойства Name Property или Value Pattern. Я попытался пройти маршрут IAccessible, поскольку я видел IsLegacyIAccessiblePatternAvailableProperty, но я получаю пустую строку для имени и значения. Я думаю, что должен быть способ сделать это, если Inspect сможет. –