Implementering av UI Automation-provider på klientsidan
Kommentar
Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.
Flera olika användargränssnittsramverk (UI) används i Microsofts operativsystem, inklusive Win32, Windows Forms och Windows Presentation Foundation (WPF). Microsoft UI Automation exponerar information om gränssnittselement för klienter. UI Automation har dock inte själv medvetenhet om de olika typer av kontroller som finns i dessa ramverk och de tekniker som behövs för att extrahera information från dem. I stället överlåts den här uppgiften till objekt som kallas providers. En provider extraherar information från en specifik kontroll och ger den informationen till UI Automation, som sedan presenterar den för klienten på ett konsekvent sätt.
Leverantörer kan finnas antingen på serversidan eller på klientsidan. En serverdelsprovider implementeras av själva kontrollen. WPF-element implementerar leverantörer, liksom alla kontroller från tredje part som skrivits med UI Automation i åtanke.
Äldre kontroller som de i Win32 och Windows Forms har dock inte direkt stöd för UI Automation. Dessa kontroller hanteras i stället av leverantörer som finns i klientprocessen och hämtar information om kontroller med hjälp av kommunikation mellan processer. till exempel genom att övervaka Windows-meddelanden till och från kontrollerna. Sådana leverantörer på klientsidan kallas ibland proxyservrar.
Windows Vista tillhandahåller leverantörer för standardkontrollerna Win32 och Windows Forms. Dessutom ger en reservleverantör delvis stöd för UI Automation till alla kontroller som inte hanteras av en annan serverdelsprovider eller proxy, men som har en Microsoft Active Accessibility-implementering. Alla dessa leverantörer läses in automatiskt och är tillgängliga för klientprogram.
Mer information om stöd för Win32- och Windows Forms-kontroller finns i UI Automation-stöd för standardkontroller.
Program kan också registrera andra leverantörer på klientsidan.
Distribuera leverantörer på klientsidan
UI Automation förväntar sig att hitta leverantörer på klientsidan i en sammansättning med hanterad kod. Namnområdet i den här sammansättningen bör ha samma namn som sammansättningen. En sammansättning med namnet ContosoProxies.dll skulle till exempel innehålla namnområdet ContosoProxies. Skapa en UIAutomationClientSideProviders klass i namnområdet. I implementeringen av det statiska ClientSideProviderDescriptionTable fältet skapar du en matris med ClientSideProviderDescription strukturer som beskriver leverantörerna.
Registrera och konfigurera leverantörer på klientsidan
Leverantörer på klientsidan i ett DLL-bibliotek (Dynamic Link Library) läses in genom att anropa RegisterClientSideProviderAssembly. Ingen ytterligare åtgärd krävs av ett klientprogram för att använda leverantörerna.
Leverantörer som implementeras i klientens egen kod registreras med hjälp RegisterClientSideProvidersav . Den här metoden tar som argument en matris med ClientSideProviderDescription strukturer, som var och en anger följande egenskaper:
En återanropsfunktion som skapar providerobjektet.
Klassnamnet på de kontroller som providern ska hantera.
Avbildningsnamnet för programmet (vanligtvis det fullständiga namnet på den körbara filen) som providern ska hantera.
Flaggor som styr hur klassnamnet matchas mot fönsterklasser som finns i målprogrammet.
De två sista parametrarna är valfria. Klienten kan ange målprogrammets avbildningsnamn när den vill använda olika leverantörer för olika program. Klienten kan till exempel använda en provider för en Win32-listvykontroll i ett känt program som stöder mönstret För flera vyer och en annan för en liknande kontroll i ett annat känt program som inte gör det.