Реализация клиентского поставщика автоматизации пользовательского интерфейса
Примечание.
Эта документация предназначена для разработчиков .NET Framework, желающих использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в статье API автоматизации Windows. Автоматизация пользовательского интерфейса.
Несколько различных платформ пользовательского интерфейса используются в операционных системах Майкрософт, включая Win32, Windows Forms и Windows Presentation Foundation (WPF). Корпорация Майкрософт модель автоматизации пользовательского интерфейса предоставляет сведения о элементах пользовательского интерфейса клиентам. Однако модель автоматизации пользовательского интерфейса сами по себе не осознают различные типы элементов управления, которые существуют в этих платформах, и методы, необходимые для извлечения информации из них. Эта задача оставляется объектам, называемым поставщиками. Поставщик извлекает информацию из определенного элемента управления и передает эти сведения в модель автоматизации пользовательского интерфейса, которые затем передаются клиенту в согласованном режиме.
Поставщики могут существовать на стороне сервера или на стороне клиента. Поставщик на стороне сервера реализуется самим элементом управления. Элементы WPF реализуют поставщиков, как и любые сторонние элементы управления, написанные с помощью модель автоматизации пользовательского интерфейса в виду.
Однако старые элементы управления, такие как Win32 и Windows Forms, не поддерживают напрямую модель автоматизации пользовательского интерфейса. Вместо этого эти элементы управления обслуживаются поставщиками, существующими в процессе клиента, и получают сведения об элементах управления с помощью обмена данными между процессами; Например, отслеживая сообщения Windows и из элементов управления. Такие поставщики на стороне клиента иногда называются прокси.
Поставщики Windows Vista предоставляют стандартные элементы управления Win32 и Windows Forms. Кроме того, резервный поставщик предоставляет частичную модель автоматизации пользовательского интерфейса поддержку любого элемента управления, который не обслуживается другим серверным поставщиком или прокси-сервером, но имеет реализацию Microsoft Active Accessibility. Все эти поставщики автоматически загружаются и доступны для клиентских приложений.
Дополнительные сведения о поддержке элементов управления Win32 и Windows Forms см. в разделе модель автоматизации пользовательского интерфейса Поддержка стандартных элементов управления.
Приложения также могут регистрировать другие поставщики на стороне клиента.
Распространение поставщиков на стороне клиента
модель автоматизации пользовательского интерфейса ожидает поиска поставщиков на стороне клиента в сборке управляемого кода. Пространство имен в этой сборке должно иметь имя, совпадающее с именем сборки. Например, сборка с именем ContosoProxies.dll будет содержать пространство имен ContosoProxies. В этом пространстве имен создайте класс UIAutomationClientSideProviders . В реализации статического поля ClientSideProviderDescriptionTable создайте массив структур ClientSideProviderDescription , описывающий поставщиков.
Регистрация и настройка поставщиков на стороне клиента
Клиентские поставщики в библиотеке динамической компоновки загружаются путем вызова RegisterClientSideProviderAssembly. Для использования этих поставщиков дальнейших действий от клиентского приложения не требуется.
Поставщики, реализованные в собственном коде клиента, регистрируются с помощью метода RegisterClientSideProviders. Этот метод в качестве аргумента принимает массив структур ClientSideProviderDescription , каждая из которых задает следующие свойства:
функцию обратного вызова, которая создает объект поставщика;
имя класса элементов управления, которые будет обслуживать поставщик;
имя образа приложения (обычно полное имя исполняемого файла), который поставщик будет обслуживать;
флаги, которые определяют, как имя класса сопоставляются с классами окон, находящимися в целевом приложении.
Последние два параметра являются необязательными. Клиент может задавать имя образа целевого приложения, если хочет использовать разные поставщики для разных приложений. Например, клиент может использовать один поставщик для элемента управления представлением списка Win32 в известном приложении, поддерживающем шаблон "Несколько представлений", а другой для аналогичного элемента управления в другом известном приложении, которое не поддерживает.