2011-07-26 6 views

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

+1

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

+0

Próbowałem lib od uiautomationverify i pattern.GetIAccessible() zwraca null :( – AlexGu

+0

, ale pattern.Current.State działa. Dzięki! – AlexGu