Megosztás a következőn keresztül:


WinEvents és aktív akadálymentesség

A Microsoft Active Accessibility-kiszolgálók WinEvents- generálnak az ügyfelek értesítése céljából, ha egy hozzáférhető objektum megváltozik. Számos olyan feltétel létezik, amelyben a kiszolgáló értesíti az ügyfelet a változásról. A Microsoft Active Accessibility által meghatározott minden eseményállandó egy olyan feltételt ír le, amelyről az ügyfél értesítést kap. A WinEvents például a következő jeleket képes jelezni:

  • Objektum létrehozása vagy megsemmisítése esetén.
  • Amikor egy objektum megkapja vagy elveszíti a fókuszt.
  • Amikor egy objektum állapota vagy helye megváltozik.
  • Amikor egy objektum bármely tulajdonsága megváltozik.

Az ügyfélalkalmazások nem kapnak automatikusan eseményértesítéseket; a SetWinEventHook függvény meghívásával meg kell adniuk, hogy mely eseményeket szeretnék fogadni. A SetWinEventHook segítségével az ügyfél regisztrál egy vagy több esemény fogadására, hogy beállítson egy függvényt a megadott események kezelésére. Az ügyfelek ugyanazt a horogfüggvényt használhatják több típusú esemény kezelésére, vagy többtényezős horogfüggvényeket is használhatnak. Az ügyfelek minden egyes regisztrálandó horogfüggvényhez egyszer hívják meg a SetWinEventHook függvényt.

A horogfüggvények az ügyfél kódtörzsében, egy ügyfél folyamatába leképezett DLL-ben, vagy egy kiszolgáló folyamatába leképezett DLL-ben találhatók. Mindegyik módszernek vannak előnyei és hátrányai. További információkért lásd: In-Context és a környezeten kívüli hozzárendelési függvényeket.

Az ügyfelek eseményeseményről való értesítéséhez a kiszolgálók meghívják NotifyWinEvent. A rendszer ellenőrzi, hogy az ügyfélalkalmazások beállítottak-e horogfüggvényeket az eseményhez, és szükség esetén meghívja a megfelelő horogfüggvényeket.

Az ügyfél horogfüggvényének meghívásakor számos paramétert kap, amelyek leírják az eseményt és az eseményt létrehozó objektumot. Az eseményt létrehozó objektumhoz való hozzáférés érdekében az ügyfélhohorog függvény meghívja AccessibleObjectFromEvent.

Jegyzet

Ha nincs ügyfél regisztrálva a WinEvents fogadására, a NotifyWinEvent hívásának teljesítményre gyakorolt hatása elhanyagolható.

A kiszolgálók a NotifyWinEvent csak a saját akadálymentes objektumaik módosításait hívják meg; nem hívják meg NotifyWinEvent a rendszer által biztosított felhasználói felület elemeinek változásait.

Event-Driven Kommunikáció

Az ügyfeleknek regisztrálniuk kell egy WinEvent-horgot, mielőtt megkaphatják a WinEvent-értesítéseket. A szükségtelen visszahívások elkerülése és a teljesítmény javítása érdekében azt javasoljuk az ügyfeleknek, hogy csak azokra az eseményekre regisztráljanak, amelyeket valóban meg akarnak kapni.

A horog eljáráson belül az ügyfél meghívhatja AccessibleObjectFromEvent, hogy lekérjen egy IAccessible objektumot ahhoz az elemhez, amelyre az esemény vonatkozik. Ezzel az objektummal az ügyfél elkezdheti meghívni IAccessible metódusokat az információk lekéréséhez vagy a felhasználói felület elemének használatához.

WinEvents