Jak zdobyć LegacyIAccessible.State i inne LegacyIAccessibles AutomationElement z C#? podobnie jak Inspect.exe z narzędzi sprawia, że.LegacyIAccessible w Windows.Automation
7
A
Odpowiedz
6
Urządzenie LegacyIAccessible
jest nowe i nie jest dostępne na poziomie .NET, podobnie jak w .NET 4.0. Ale istnieje project on CodePlex, który ma nowszą implementację, która w change set 38718 dodała obsługę tego.
Bądź uważaj, że trzeba opracować projekt od źródła, najnowsza wersja binarna jest zbyt stary, aby zawierać to niestety ...
Co chcesz zrobić coś takiego jak:
if ((bool) child.GetCurrentPropertyValue(AutomationElementIdentifiers.IsLegacyIAccessiblePatternAvailableProperty)) {
var pattern = ((LegacyIAccessiblePattern) child.GetCurrentPattern(LegacyIAccessiblePattern.Pattern));
var state = pattern.GetIAccessible().accState;
// Do something with state...
}
Komentarze w kodzie źródłowym mówią, że są to nowe funkcje systemu Windows 7, ale mogę je uruchomić w systemie Windows XP SP3 ...
Mam nadzieję, że to pomoże!
/AZ
Ale czy nie będzie konfliktu z .net4? Ma własną implementację. Jestem początkującym w C#. Czy mogę używać tylko LegacyIAccessiblePattern.cs z tego projektu lub z http://uiautomationverify.codeplex.com/? – AlexGu
Próbowałem lib od uiautomationverify i pattern.GetIAccessible() zwraca null :( – AlexGu
, ale pattern.Current.State działa. Dzięki! – AlexGu