В нашем приложении много элементов управления, которые создаются динамически. Например, панель навигации содержит группы ссылок, которые меняются по мере того, как пользователь перемещается по приложению. В первый раз, когда я использую AccExplorer для выбора этих ссылок, он отлично их находит. Однако после того, как я перейду на другую страницу, AccExplorer не увидит ссылки в обновленной панели навигации. На самом деле, старые элементы управления ссылками по-прежнему отображаются в древовидной иерархии AccExplorer, и когда я нажимаю на них, AccExplorer выделяет области рабочего стола, которые находятся за пределами фактического окна нашего приложения.
Элементы управления изменились, но AccExplorer их не распознает. Он по-прежнему думает, что иерархия такая же.
Что мне кажется странным, так это то, что закрытие AccExplorer и последующее открытие нового экземпляра AccExplorer приводят к тем же результатам. Когда я выбираю новый элемент управления навигацией с помощью AccExplorer, он не видит новых ссылок. Он воссоздает старую иерархию со старыми ссылками. Единственный способ увидеть новые ссылки — закрыть наше приложение, снова открыть наше приложение, вручную перейти на новую страницу, а затем выбрать элементы управления с помощью AccExplorer.
Элемент управления навигацией — это элемент управления DevExpress. ОС WinXP. Акэксплорер 2.0. Я бы предпочел использовать UIAutomation, но не все элементы управления DevExpress поддерживают UIAutomation. Мы пытаемся использовать MSAA, чтобы заполнить эти пробелы.