Dela via


Anropa kontrollmönster

Beskriver riktlinjer och konventioner för att implementera IInvokeProvider, inklusive information om metoder. Kontrollmönstret Invoke används för att stödja kontroller som inte underhåller tillstånd när de aktiveras, utan snarare initierar eller utför en enda, tvetydig åtgärd.

Kontroller som upprätthåller tillstånd, till exempel kryssrutor och alternativknappar, måste i stället implementera IToggleProvider respektive ISelectionProvider. Exempel på kontroller som implementerar det här kontrollmönstret finns i Kontrolltyper och Deras kontrollmönster som stöds.

Det här avsnittet innehåller följande avsnitt.

Riktlinjer och konventioner för implementering

När du implementerar Anropa kontrollmönster bör du tänka på följande riktlinjer och konventioner:

  • Kontroller implementerar IInvokeProvider om samma beteende inte exponeras via en annan kontrollmönsterprovider. Om metoden IUIAutomationInvokePattern::Invoke på en kontroll utför samma åtgärd som metoden IUIAutomationExpandCollapsePattern::Expandera eller Dölj-metoden bör kontrollen inte implementera IInvokeProvider.

  • Att anropa en kontroll utförs vanligtvis genom att klicka eller dubbelklicka eller trycka på RETUR, ett fördefinierat kortkommando eller någon alternativ kombination av tangenttryckningar.

  • Händelsen Invoked event (UIA_Invoke_InvokedEventId) aktiveras på en kontroll som har aktiverats (som ett svar på en kontroll som utför dess associerade åtgärd). Om möjligt bör händelsen aktiveras när kontrollen har slutfört åtgärden och returnerats utan blockering. Händelsen Invoked (UIA_Invoke_InvokedEventId) bör aktiveras innan Invoke-begäran hanteras i följande scenarier:

    • Det är inte möjligt eller praktiskt att vänta tills åtgärden är klar.
    • Åtgärden kräver användarinteraktion.
    • Åtgärden är tidskrävande och gör att den anropande klienten blockeras under en betydande tid.
  • Om anrop av kontrollen har betydande biverkningar bör dessa biverkningar exponeras via egenskapen HelpText. Även om IUIAutomationInvokePattern::Invoke inte är associerad med markeringen kan Anropa göra att en annan kontroll väljs.

  • Hovringseffekter (eller musöver) utgör vanligtvis inte en anropad händelse. Kontroller som utför en åtgärd (i stället för att orsaka en visuell effekt) baserat på hovringstillståndet bör dock stödja Anropa kontrollmönster.

    Not

    Den här implementeringen anses vara ett hjälpmedelsproblem om kontrollen endast kan anropas som ett resultat av en musrelaterad biverkning.

  • Att anropa en kontroll skiljer sig från att välja ett objekt. Beroende på kontrollen kan det dock leda till att objektet väljs som en bieffekt om det anropas. Om du till exempel anropar ett Microsoft Word-dokumentlistobjekt i mappen Mina dokument markeras både objektet och dokumentet öppnas.

  • Ett element kan försvinna från Microsoft UI Automation-trädet omedelbart när det anropas. Att begära information från elementet som tillhandahålls av händelseåteranropet kan misslyckas till följd av detta. Förhämtning av cachelagrad information är den rekommenderade lösningen.

  • Kontroller kan implementera flera kontrollmönster. Kontrollen fyllningsfärg i Microsoft Excel-verktygsfältet implementerar till exempel både kontrollmönstren Invoke och ExpandCollapse. Kontrollmönstret ExpandCollapse exponerar menyn och Invoke kontrollmönster fyller den aktiva markeringen med den valda färgen.

Obligatoriska medlemmar för IInvokeProvider

Följande metod krävs för att implementera gränssnittet IInvokeProvider.

Obligatoriska medlemmar Medlemstyp Anteckningar
Anropa Metod Invoke är ett asynkront anrop och måste returneras omedelbart utan blockering.
Det här beteendet är särskilt viktigt för kontroller som direkt eller indirekt startar en modal dialogruta när den anropas. Alla UI Automation-klienter som initierade händelsen kommer att förbli blockerade tills den modala dialogrutan har stängts.

Det här kontrollmönstret har inga associerade egenskaper eller händelser.

kontrolltyper och deras kontrollmönster som stöds

översikt över UI Automation-kontrollmönster

Översikt över automationsträd för användargränssnittet

UIA_Invoke_InvokedEventId