Получение шаблонов из COM-интерфейса UI Automation - PullRequest
0 голосов
/ 10 ноября 2011

Я разработал приложение, которое использует управляемую библиотеку автоматизации пользовательского интерфейса.Производительность была очень медленной, поэтому я переключился на использование COM API UI Automation с оберткой: http://uiacomwrapper.codeplex.com/.

Я столкнулся с проблемой с одним из элементов AutomationElements, который раньше возвращал ValuePattern, больше не делая этого.Когда я использую UISpy, я вижу, что он также находит ValuePattern.Это проблема с API, оболочкой?Есть ли что-нибудь, что я могу сделать, чтобы заставить это работать, используя COM API.(Я действительно не хочу возвращаться к использованию управляемой библиотеки)

Спасибо

1 Ответ

0 голосов
/ 12 ноября 2011

Можете ли вы увидеть шаблон значений, используя текущую версию inspect32.exe? Инспекция осуществляется из Windows SDK и показывает элементы MSAA или UIA в зависимости от режима. Он неуправляемый, поэтому покажет представление, согласующееся с использованием COM, а UISpy - управляемый. Из того, что я помню, есть некоторые различия между управляемой и неуправляемой версиями. Знаете ли вы, с каким типом пользовательского интерфейса (например, кнопка winforms, общий список управления и т. Д.), Вы видите эту проблему?

Я предполагаю, что то, что здесь происходит, заключается в том, что UltraGrid, вероятно, имеет реализацию MSAA / IAccessible. МАУ пытается преобразовать это в соответствующие шаблоны МАУ - но поддержка МСА для этого немного отличается в своих управляемых и неуправляемых версиях - в частности, управляемая версия довольно медленная! В любом случае, неуправляемая версия UIA позволяет вам перейти к базовой реализации MSAA - через этот LegacyIAccessiblePattern - так что вы можете получить значения оттуда.

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