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


реализация поставщика автоматизации пользовательского интерфейса Client-Side

Замечание

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

Несколько различных платформ пользовательского интерфейса используются в операционных системах Майкрософт, включая Win32, Windows Forms и Windows Presentation Foundation (WPF). Служба автоматизации пользовательского интерфейса Майкрософт предоставляет сведения об элементах пользовательского интерфейса клиентам. Однако автоматизация пользовательского интерфейса сама по себе не учитывает различные типы элементов управления, которые существуют в этих платформах, и методы, необходимые для извлечения информации из них. Вместо этого она оставляет эту задачу объектам, называемым поставщиками. Поставщик извлекает информацию из определенного элемента управления и передает эти сведения в службу автоматизации пользовательского интерфейса, которая затем передает ее клиенту согласованно.

Поставщики могут существовать на стороне сервера или на стороне клиента. Поставщик на стороне сервера реализуется самим контролом. Элементы WPF реализуют поставщиков, как и любые сторонние элементы управления, написанные с учетом автоматизации пользовательского интерфейса.

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

Поставщики Windows Vista предоставляют стандартные элементы управления Win32 и Windows Forms. Кроме того, резервный поставщик предоставляет частичную поддержку UI Automation любому контролю, который не обслуживается другим серверным поставщиком или прокси-сервером, но имеет реализацию технологии Microsoft Active Accessibility. Все эти поставщики автоматически загружаются и доступны клиентским приложениям.

Дополнительные сведения о поддержке элементов управления Win32 и Windows Forms см. в статье "Поддержка автоматизации пользовательского интерфейса для стандартных элементов управления".

Приложения также могут регистрировать других клиентских поставщиков.

Распространение поставщиков услуг Client-Side

Служба автоматизации пользовательского интерфейса ожидает найти поставщиков на стороне клиента в сборке управляемого кода. Пространство имен в этой сборке должно иметь то же имя, что и сборка. Например, сборка с именем ContosoProxies.dll будет содержать пространство имен ContosoProxies. Создайте класс UIAutomationClientSideProviders в пространстве имен. В реализации статического ClientSideProviderDescriptionTable поля создайте массив ClientSideProviderDescription структур, описывающих поставщиков.

Регистрация и настройка поставщиков Client-Side

Поставщики на стороне клиента в библиотеке динамической компоновки (DLL) загружаются с помощью вызова RegisterClientSideProviderAssembly. Никакие дальнейшие действия не требуются клиентскому приложению для использования поставщиков.

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

  • Функция обратного вызова, которая создает объект поставщика.

  • Имя класса элементов управления, которые будет обслуживать поставщик.

  • Имя образа приложения (обычно полное имя исполняемого файла), которое будет обслуживать поставщик.

  • Флаги, управляющие сопоставлением имени класса с классами окон, найденными в целевом приложении.

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

См. также