Översikt över UI Automation Providers
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.
UI Automation-leverantörer aktiverar kontroller för att kommunicera med UI Automation-klientprogram. I allmänhet representeras varje kontroll eller annat distinkt element i ett användargränssnitt (UI) av en provider. Providern exponerar information om elementet och implementerar eventuellt kontrollmönster som gör att klientprogrammet kan interagera med kontrollen.
Klientprogram behöver vanligtvis inte arbeta direkt med leverantörer. De flesta standardkontroller i program som använder ramverken Win32, Windows Forms eller Windows Presentation Foundation (WPF) exponeras automatiskt för UI Automation-systemet. Program som implementerar anpassade kontroller kan också implementera UI Automation-leverantörer för dessa kontroller, och klientprogram behöver inte vidta några särskilda åtgärder för att få åtkomst till dem.
Det här avsnittet innehåller en översikt över hur kontrollutvecklare implementerar UI Automation-leverantörer, särskilt för kontroller i Windows Forms och Win32-fönster.
Typer av leverantörer
UI Automation-leverantörer finns i två kategorier: leverantörer på klientsidan och leverantörer på serversidan.
Leverantörer på klientsidan
Leverantörer på klientsidan implementeras av UI Automation-klienter för att kommunicera med ett program som inte stöder, eller inte har fullt stöd för, UI Automation. Leverantörer på klientsidan kommunicerar vanligtvis med servern över processgränsen genom att skicka och ta emot Windows-meddelanden.
Eftersom UI Automation-leverantörer för kontroller i Win32-, Windows Forms- eller WPF-program tillhandahålls som en del av operativsystemet, behöver klientprogram sällan implementera sina egna leverantörer, och den här översikten omfattar dem inte ytterligare.
Leverantörer på serversidan
Leverantörer på serversidan implementeras av anpassade kontroller eller av program som baseras på ett annat gränssnittsramverk än Win32, Windows Forms eller WPF.
Leverantörer på serversidan kommunicerar med klientprogram över processgränsen genom att exponera gränssnitt för UI Automation-kärnsystemet, som i sin tur hanterar begäranden från klienter.
Begrepp för UI Automation-provider
Det här avsnittet innehåller korta förklaringar av några av de viktiga begrepp som du behöver förstå för att implementera UI Automation-leverantörer.
Element
UI Automation-element är delar av användargränssnittet (UI) som är synliga för UI Automation-klienter. Exempel är programfönster, fönster, knappar, knappbeskrivningar, listrutor och listobjekt.
Navigering
Gränssnittsautomatiseringselement exponeras för klienter som ett UI Automation-träd. UI Automation konstruerar trädet genom att navigera från ett element till ett annat. Navigeringen aktiveras av leverantörerna för varje element, som var och en kan peka på en överordnad, syskon och underordnade element.
Mer information om klientvyn för UI Automation-trädet finns i Översikt över UI Automation Tree.
Vyer
En klient kan se UI Automation-trädet i tre huvudvyer, enligt följande tabell.
Visa | beskrivning |
---|---|
Raw-vy | Innehåller alla element. |
Kontrollvy | Innehåller element som är kontroller. |
Innehållsvy | Innehåller element som har innehåll. |
Mer information om klientvyer för UI Automation-trädet finns i Översikt över UI Automation-träd.
Det är providerimplementeringens ansvar att definiera ett element som ett innehållselement eller ett kontrollelement. Kontrollelement kan också vara innehållselement, men alla innehållselement är kontrollelement.
Ramverk
Ett ramverk är en komponent som hanterar underordnade kontroller, träfftestning och rendering i ett område på skärmen. Ett Win32-fönster, som ofta kallas HWND, kan till exempel fungera som ett ramverk som innehåller flera UI Automation-element, till exempel en menyrad, ett statusfält och knappar.
Win32-containerkontroller som listrutor och trädvyer anses vara ramverk, eftersom de innehåller sin egen kod för att återge underordnade objekt och utföra träfftestning på dem. Däremot är en WPF-listruta inte ett ramverk, eftersom renderingen och träfftestningen hanteras av det innehållande WPF-fönstret.
Användargränssnittet i ett program kan bestå av olika ramverk. Ett HWND-programfönster kan till exempel innehålla dynamisk HTML (DHTML) som i sin tur innehåller en komponent, till exempel en kombinationsruta i en HWND.
Fragment
Ett fragment är ett fullständigt underträd av element från ett visst ramverk. Elementet vid rotnoden i underträdet kallas för en fragmentrot. En fragmentrot har ingen överordnad, men finns i något annat ramverk, vanligtvis ett Win32-fönster (HWND).
Värdar
Rotnoden för varje fragment måste finnas i ett element, vanligtvis ett Win32-fönster (HWND). Undantaget är skrivbordet, som inte finns i något annat element. Värden för en anpassad kontroll är HWND för själva kontrollen, inte programfönstret eller något annat fönster som kan innehålla grupper av kontroller på den översta nivån.
Värden för ett fragment spelar en viktig roll när det gäller att tillhandahålla UI Automation-tjänster. Det möjliggör navigering till fragmentroten och tillhandahåller vissa standardegenskaper så att den anpassade providern inte behöver implementera dem.