LegacyIAccessible в Windows. Автоматизация - PullRequest
7 голосов
/ 27 июля 2011

Как получить LegacyIAccessible.State и другие LegacyIAccessibles из AutomationElement с C #? так же, как Inspect.exe из инструментов делает это.

1 Ответ

6 голосов
/ 27 июля 2011

LegacyIAccessible является новым и недоступен на уровне .NET, как и в .NET 4.0.Но есть проект на CodePlex , который имеет более новую реализацию, в которой в наборе изменений 38718 добавлена ​​поддержка для этого.

Имейте в виду, что вам нужно скомпилировать проект из исходного кода, последний бинарный выпуск слишком стар, чтобы содержать это, к сожалению ...

То, что вы хотите сделать, выглядит примерно так:

if ((bool) child.GetCurrentPropertyValue(AutomationElementIdentifiers.IsLegacyIAccessiblePatternAvailableProperty)) {
    var pattern = ((LegacyIAccessiblePattern) child.GetCurrentPattern(LegacyIAccessiblePattern.Pattern));
    var state = pattern.GetIAccessible().accState;

    // Do something with state...
}

В комментариях к исходному коду говорится, что это новые функции для Windows 7, но я заставляю его работать в Windows XP SP3 ...

Надеюсь, это поможет!

/ AZ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...