Aracılığıyla paylaş


WinEvents ve Etkin Erişilebilirlik

Microsoft Etkin Erişilebilirlik sunucuları, erişilebilir bir nesne değiştiğinde istemcileri bilgilendirmek için WinEvents oluşturur. Sunucunun bir istemciye değişiklik bildiren çok sayıda koşul vardır. Microsoft Etkin Erişilebilirlik tarafından tanımlanan her olay sabiti, istemciye bildirildiği bir koşulu açıklar. Örneğin, WinEvents şu sinyalleri verebilir:

  • Bir nesne oluşturulduğunda veya yok edildiğinde.
  • Bir nesne odağı kazandığında veya kaybettiğinde.
  • Bir nesnenin durumu veya konumu değiştiğinde.
  • Bir nesnenin herhangi bir özelliği değiştiğinde.

İstemci uygulamaları otomatik olarak olay bildirimleri almaz; SetWinEventHook işlevini çağırarak hangi olayları almak istediklerini belirtmeleri gerekir. SetWinEventHookile, bir istemci bir veya birden fazla olay edinmek için kaydolur ve belirtilen olayları işlemek üzere bir kanca işlevi ayarlar. İstemciler birden çok olay türünü işlemek için aynı kanca işlevini kullanabilir veya birden fazla kanca işlevi kullanabilir. İstemciler, kaydetmesi gereken her bir kanca işlevi için SetWinEventHook'i bir kez çağırır.

Kanca işlevleri, istemcinin kod gövdesinde, istemcinin işlemine eşlenen bir DLL'de veya sunucunun işlemiyle eşlenen bir DLL'de bulunur. Bu yöntemlerin her birinin avantajları ve dezavantajları vardır. Daha fazla bilgi için bkz. In-Context ve Bağlam Dışı Kanca İşlevleri.

İstemcileri bir olay oluşumu hakkında bilgilendirmek için sunucular notifyWinEventçağırır. Sistem, herhangi bir istemci uygulamanın olay için kanca işlevleri ayarlayıp ayarlamadığını denetler ve gerektiği gibi uygun kanca işlevlerini çağırır.

İstemcinin kanca işlevi çağrıldığında, olayı ve olayı oluşturan nesneyi açıklayan bir dizi parametre alır. İstemci kanca işlevi, olayı oluşturan nesneye erişim elde etmek için AccessibleObjectFromEventçağırır.

Not

WinEvent'leri almak için kayıtlı istemci yok ise NotifyWinEvent çağırmanın sunucu üzerindeki performans etkisi ihmal edilebilir.

Sunucular yalnızca kendi erişilebilir nesnelerindeki değişiklikler için NotifyWinEvent çağırır; sistem tarafından sağlanan kullanıcı arabirimi öğelerindeki değişiklikler için NotifyWinEvent çağırmaz.

Event-Driven İletişim

İstemcilerin WinEvent bildirimlerini alabilmesi için önce bir WinEvent kancası kaydetmesi gerekir. Gereksiz geri bildirimleri önlemek ve performansı artırmak için istemcilerin yalnızca ihtiyaç duydukları olaylara kaydolmaları önerilir.

Kanca yordamı içinde istemci, olayın geçerli olduğu öğe için IAccessible nesnesi almak üzere AccessibleObjectFromEvent'ü çağırabilir. Bu nesneyle, istemci bilgileri almak veya kullanıcı arabirimi öğesiyle etkileşim kurmak için IAccessible yöntemlerini çağırmaya başlayabilir.

WinEvents