Implementatie van ui-automatiseringsprovider aan de clientzijde
Notitie
Deze documentatie is bedoeld voor .NET Framework-ontwikkelaars die de beheerde UI Automation-klassen willen gebruiken die zijn gedefinieerd in de System.Windows.Automation naamruimte. Zie Windows Automation-API: UI Automation voor de meest recente informatie over UI Automation.
Verschillende gebruikersinterfaceframeworks (UI) worden gebruikt in Microsoft-besturingssystemen, waaronder Win32, Windows Forms en Windows Presentation Foundation (WPF). Microsoft UI Automation bevat informatie over UI-elementen voor clients. UI Automation heeft echter zelf geen kennis van de verschillende typen besturingselementen die in deze frameworks bestaan en de technieken die nodig zijn om informatie uit deze frameworks te extraheren. In plaats daarvan wordt deze taak overgeslagen op objecten die providers worden genoemd. Een provider extraheert informatie uit een specifiek besturingselement en geeft die informatie over aan UI Automation, die deze vervolgens op een consistente manier aan de client presenteert.
Providers kunnen aan de serverzijde of aan de clientzijde bestaan. Een provider aan de serverzijde wordt geïmplementeerd door het besturingselement zelf. WPF-elementen implementeren providers, net zoals alle besturingselementen van derden die zijn geschreven met UI Automation in gedachten.
Oudere besturingselementen, zoals die in Win32 en Windows Forms, bieden echter geen rechtstreekse ondersteuning voor UI Automation. Deze controles worden in plaats daarvan geleverd door providers die aanwezig zijn in het clientproces en informatie verkrijgen over besturingselementen met behulp van communicatie tussen processen; Bijvoorbeeld door Windows-berichten van en naar de besturingselementen te controleren. Dergelijke providers aan de clientzijde worden soms proxy's genoemd.
Windows Vista levert providers voor standaardBesturingselementen voor Win32 en Windows Forms. Bovendien biedt een terugvalprovider gedeeltelijke UI Automation-ondersteuning voor elk besturingselement dat niet wordt geleverd door een andere provider of proxy aan de serverzijde, maar een Microsoft Active Accessibility-implementatie heeft. Al deze providers worden automatisch geladen en beschikbaar voor clienttoepassingen.
Zie UI Automation-ondersteuning voor Standaardbesturingselementen voor meer informatie over ondersteuning voor Besturingselementen van Win32 en Windows Forms.
Toepassingen kunnen ook andere providers aan de clientzijde registreren.
Providers aan clientzijde distribueren
UI Automation verwacht providers aan clientzijde te vinden in een assembly met beheerde code. De naamruimte in deze assembly moet dezelfde naam hebben als de assembly. Een assembly met de naam ContosoProxies.dll bevat bijvoorbeeld de naamruimte ContosoProxies. Maak in de naamruimte een UIAutomationClientSideProviders klasse. Maak in de implementatie van het statische ClientSideProviderDescriptionTable veld een matrix met ClientSideProviderDescription structuren die de providers beschrijven.
Providers aan clientzijde registreren en configureren
Providers aan de clientzijde in een DLL (Dynamic Link Library) worden geladen door aan te roepen RegisterClientSideProviderAssembly. Er is geen verdere actie vereist door een clienttoepassing om gebruik te maken van de providers.
Providers die zijn geïmplementeerd in de eigen code van de client, worden geregistreerd met behulp van RegisterClientSideProviders. Deze methode gebruikt als argument een matrix van ClientSideProviderDescription structuren, die elk de volgende eigenschappen specificeert:
Een callback-functie waarmee het providerobject wordt gemaakt.
De klassenaam van de besturingselementen die door de provider worden gebruikt.
De installatiekopieënnaam van de toepassing (meestal de volledige naam van het uitvoerbare bestand) die door de provider wordt gebruikt.
Vlaggen die bepalen hoe de klassenaam overeenkomt met vensterklassen in de doeltoepassing.
De laatste twee parameters zijn optioneel. De client kan de installatiekopieënnaam van de doeltoepassing opgeven wanneer deze verschillende providers voor verschillende toepassingen wil gebruiken. De client kan bijvoorbeeld één provider gebruiken voor een Win32-lijstweergavebeheer in een bekende toepassing die ondersteuning biedt voor het patroon Meerdere weergaven en een andere voor een vergelijkbaar besturingselement in een andere bekende toepassing die dat niet doet.