MSAA UI Automation get_accChildCount неправильно возвращает 0 для инфраструктуры UltraTree в Winforms

Работая над автоматизацией элемента управления Infragistics UltraTree в приложении C # Winforms, я обнаружил, что в UltraTree реализована модель AccessibleObject (MSAA). Я смог успешно захватить интерфейс IAccessible, поместив hwnd, захваченный из spy ++ в

IAccessible* accessibleObject;
AccessibleObjectFromWindow(hwnd, OBJID_CLIENT, IID_IAccessible, (void**)&accessibleObj);

Проблема в том, что когда я сейчас звоню

long childCount;
accessibleObj->get_accChildCount(&childCount);

Результат, который я получаю, равен нулю. Посмотрев исходный код UltraTree, я заметил, что его реализация подсчета дочерних элементов не должна возвращать ноль (проверяется с помощью windbg для проверки полей, используемых во внутреннем коде). Кажется, что все другие функции MSAA работают правильно (например, «accLocation»).

Я в тупик, почему это так. Я также попытался использовать 'IEnumVARIANT', но он также не нашел дочерних элементов, хотя дерево имеет 25 элементов в коллекции, которую использует get_accChildCount. Я еще не пытался узнать, смог ли Microsoft Narrator идентифицировать детей, так как на машине нет звуковой карты, но надеюсь, что скоро удастся настроить его. Я предполагаю, что Рассказчик найдет детей, и есть одна странная уловка, которую мне не хватает.

Ответы на вопрос(2)

Ваш ответ на вопрос