Поделиться через


События автоматизации пользовательского интерфейса для клиентов

Замечание

Эта документация предназначена для разработчиков .NET Framework, которые хотят использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в разделе API автоматизации Windows: автоматизация пользовательского интерфейса.

В этом разделе описывается, как события автоматизации пользовательского интерфейса Майкрософт используются клиентами автоматизации пользовательского интерфейса.

Автоматизация пользовательского интерфейса позволяет клиентам подписываться на интересующие события. Эта возможность повышает производительность, устраняя необходимость постоянно опрашивать все элементы пользовательского интерфейса в системе, чтобы узнать, изменилась ли какая-либо информация, структура или состояние.

Эффективность также улучшается благодаря возможности прослушивания событий только в определенной области. Например, клиент может прослушивать события изменения фокуса на всех элементах автоматизации пользовательского интерфейса в дереве или только на одном элементе и его потомках.

Замечание

Не предполагайте, что все возможные события создаются поставщиком службы автоматизации пользовательского интерфейса Майкрософт. Например, не все изменения свойств вызывают события, создаваемые стандартными поставщиками прокси-серверов для элементов управления Windows Forms и Win32.

Более широкое представление событий автоматизации пользовательского интерфейса см. в обзоре событий автоматизации пользовательского интерфейса.

Подписка на события

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

Метод Тип события Тип аргументов событий Тип делегата
AddAutomationFocusChangedEventHandler Изменение фокуса AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler Изменение свойства AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Изменение структуры StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler Все остальные события, определяемые по объекту AutomationEvent AutomationEventArgs или WindowClosedEventArgs AutomationEventHandler

Перед вызовом метода необходимо создать метод делегата для обработки события. Если вы предпочитаете, можно обрабатывать различные виды событий в одном методе и передавать этот метод в нескольких вызовах одному из методов в таблице. Например, один AutomationEventHandler можно настроить для обработки различных событий по-разному в соответствии с параметром EventId.

Замечание

Чтобы обработать события с закрытым окном, приведите тип аргумента, передаваемый обработчику событий как WindowClosedEventArgs. Так как элемент автоматизации пользовательского интерфейса Майкрософт для окна больше не действителен, параметр нельзя использовать sender для получения сведений; используйте GetRuntimeId вместо этого.

Осторожность

Если приложение может получать события из собственного пользовательского интерфейса, не используйте поток пользовательского интерфейса приложения для подписки на события или отмену подписки. Это может привести к непредсказуемому поведению. Дополнительные сведения см. в разделе «Проблемы многопоточности автоматизации пользовательского интерфейса».

При завершении работы приложения или когда события автоматизации пользовательского интерфейса больше не должны отслеживаться приложением, клиенты автоматизации должны вызывать один из следующих методов.

Метод Описание
RemoveAutomationEventHandler Отменяет регистрацию обработчика событий, зарегистрированного с помощью AddAutomationEventHandler.
RemoveAutomationFocusChangedEventHandler Отменяет регистрацию обработчика событий, зарегистрированного с помощью AddAutomationFocusChangedEventHandler.
RemoveAutomationPropertyChangedEventHandler Отменяет регистрацию обработчика событий, зарегистрированного с помощью AddAutomationPropertyChangedEventHandler.
RemoveAllEventHandlers Отменяет регистрацию всех зарегистрированных обработчиков событий.

Пример кода см. в разделе "Подписка на события автоматизации пользовательского интерфейса".

См. также