Implementacja dostawcy automatyzacji interfejsu użytkownika po stronie klienta

Uwaga

Ta dokumentacja jest przeznaczona dla deweloperów programu .NET Framework, którzy chcą używać zarządzanych klas automatyzacja interfejsu użytkownika zdefiniowanych w System.Windows.Automation przestrzeni nazw. Aby uzyskać najnowsze informacje na temat automatyzacja interfejsu użytkownika, zobacz Interfejs API usługi Windows Automation: automatyzacja interfejsu użytkownika.

W systemach operacyjnych firmy Microsoft jest używanych kilka różnych struktur interfejsu użytkownika, w tym Win32, Windows Forms i Windows Presentation Foundation (WPF). Microsoft automatyzacja interfejsu użytkownika udostępnia klientom informacje o elementach interfejsu użytkownika. Jednak automatyzacja interfejsu użytkownika nie ma świadomości różnych typów mechanizmów kontroli, które istnieją w tych strukturach i technik potrzebnych do wyodrębnienia z nich informacji. Zamiast tego pozostawia to zadanie obiektom nazywanym dostawcami. Dostawca wyodrębnia informacje z określonej kontrolki i przekazuje te informacje do automatyzacja interfejsu użytkownika, co następnie przedstawia je klientowi w spójny sposób.

Dostawcy mogą istnieć po stronie serwera lub po stronie klienta. Dostawca po stronie serwera jest implementowany przez samą kontrolkę. Elementy WPF implementują dostawców, podobnie jak w przypadku kontrolek innych firm napisanych przy użyciu automatyzacja interfejsu użytkownika.

Jednak starsze kontrolki, takie jak te w systemach Win32 i Windows Forms, nie obsługują bezpośrednio automatyzacja interfejsu użytkownika. Te mechanizmy kontroli są obsługiwane przez dostawców, którzy istnieją w procesie klienta i uzyskują informacje o kontrolkach przy użyciu komunikacji między procesami; na przykład przez monitorowanie komunikatów systemu Windows do i z kontrolek. Tacy dostawcy po stronie klienta są czasami nazywani serwerami proxy.

System Windows Vista dostarcza dostawców standardowych kontrolek Win32 i Windows Forms. Ponadto dostawca rezerwowy zapewnia częściową obsługę automatyzacja interfejsu użytkownika dla każdej kontroli, która nie jest obsługiwana przez innego dostawcę lub serwer proxy po stronie serwera, ale ma implementację microsoft Active Accessibility. Wszyscy ci dostawcy są automatycznie ładowani i dostępni do aplikacji klienckich.

Aby uzyskać więcej informacji na temat obsługi kontrolek Win32 i Windows Forms, zobacz automatyzacja interfejsu użytkownika Support for Standard Controls (Obsługa kontrolek w warstwie Standardowa).

Aplikacje mogą również rejestrować innych dostawców po stronie klienta.

Dystrybucja dostawców po stronie klienta

automatyzacja interfejsu użytkownika oczekuje znalezienia dostawców po stronie klienta w zestawie kodu zarządzanego. Przestrzeń nazw w tym zestawie powinna mieć taką samą nazwę jak zestaw. Na przykład zestaw o nazwie ContosoProxies.dll będzie zawierać przestrzeń nazw ContosoProxies. W przestrzeni nazw utwórz klasę UIAutomationClientSideProviders . W implementacji pola statycznego ClientSideProviderDescriptionTable utwórz tablicę ClientSideProviderDescription struktur opisujących dostawców.

Rejestrowanie i konfigurowanie dostawców po stronie klienta

Dostawcy po stronie klienta w bibliotece łączy dynamicznych (DLL) są ładowani przez wywołanie metody RegisterClientSideProviderAssembly. Do korzystania z dostawców nie jest wymagane żadne dalsze działanie aplikacji klienckiej.

Dostawcy zaimplementowani we własnym kodzie klienta są zarejestrowani przy użyciu polecenia RegisterClientSideProviders. Ta metoda przyjmuje jako argument tablicę ClientSideProviderDescription struktur, z których każda określa następujące właściwości:

  • Funkcja wywołania zwrotnego, która tworzy obiekt dostawcy.

  • Nazwa klasy kontrolek, które będzie obsługiwać dostawca.

  • Nazwa obrazu aplikacji (zazwyczaj pełna nazwa pliku wykonywalnego), która będzie obsługiwana przez dostawcę.

  • Flagi, które określają, jak nazwa klasy jest dopasowywana do klas okien znalezionych w aplikacji docelowej.

Ostatnie dwa parametry są opcjonalne. Klient może określić nazwę obrazu aplikacji docelowej, gdy chce używać różnych dostawców dla różnych aplikacji. Na przykład klient może użyć jednego dostawcy dla kontrolki widoku listy Win32 w znanej aplikacji obsługującej wzorzec wiele widoków, a drugi dla podobnej kontrolki w innej znanej aplikacji, która nie.

Zobacz też