Aracılığıyla paylaş


WinEvents Nedir?

Sunucu uygulamaları ve işletim sistemi, sistemde veya kullanıcı arabiriminde bir değişiklik gerçekleştiğinde istemcileri bilgilendirmek için WinEvents kullanır.

WinEvent desteği, Windows işletim sisteminin şunları sağlayan bir özelliğidir:

  • İstemcilerin olay bildirimlerine kaydolması için basit bir yol.
  • sunuculara istemci kodu ekleme mekanizması.
  • Sunuculardan ilgili istemcilere olayları yönlendirme.
  • Çoğu HWNDtabanlı denetimler için otomatik olay oluşturma.

HWNDtabanlı denetimler için olay oluşturma, özellikle sunucu geliştiricileri için önemlidir. Microsoft Etkin Erişilebilirlik çalışma zamanı, tüm standart kullanıcı arabirimi öğeleri için IAccessible proxy'leri sağlar. Benzer şekilde sistem, HWNDtabanlı bir denetim oluşturduğunda, yok etmesinde, taşımasında, yeniden boyutlandırmasında veya başka bir eylem gerçekleştirmesinde otomatik olarak uygun WinEvent'leri oluşturur.

Genel HWND olayları da dahil olmak üzere bazı WinEvent'ler sistem tarafından otomatik olarak desteklenir. Durum değişiklikleri veya belirli bir denetime özgü seçim olayları gibi diğer WinEvent türleri Microsoft Etkin Erişilebilirlik sunucuları tarafından desteklenir.

Kullanıcı arabirimini etkileyen bir olay oluştuğunda, sunucular NotifyWinEvent işlevini çağırarak tüm ilgili istemcilere bir olay bildirimi yayınlayabilir. İşlev çağrısı, gerçekleşen olayın türünü ve olayın uygulandığı kullanıcı arabirimi öğesini tanımlayan bilgileri içerir. İstemciler, kullanıcı arabirimi öğesi için IAccessible nesnesi almak ve daha fazla bilgi toplamak için bu bilgileri kullanabilir.

Örneğin, istemcilere bir denetimin adının değiştiğini bildirmek için sunucu NotifyWinEventçağırır ve olay parametresinde EVENT_OBJECT_NAMECHANGE geçirir. Sistem, belirli bir olayı almak üzere hangi müşterilerin kaydolduğunu belirleyerek yanıt verir ve kayıtlı geri çağırma fonksiyonunu çağırır. Olay için hiçbir istemci kaydedilmemişse sunucunun NotifyWinEvent çağrısı "işlem yok" ile karşılaştırılabilir ve performans etkisi göz ardı edilebilir.

Sunucular NotifyWinEvent çağırarak olay gerçekleştikten sonra olayı sisteme duyurur. Olay gerçekleşmeden önce kesinlikle sisteme bildirimde bulunmamalıdırlar.

Olaylarla ilgili bildirim almak için istemciler, SetWinEventHookkullanarak geri çağırma kancası işlevlerini kaydeder. İstemciler tüm olası olaylar için tek bir kanca işlevi veya ayrık olay aralıkları için birden çok kanca işlevi ayarlar. Daha fazla bilgi için bkz. Kanca İşlevi Kaydetme.

Microsoft Aktif Erişilebilirliğe bir olay bildirildiğinde, NotifyWinEventparametrelerini geçirerek bu olay için kayıtlı olan tüm hook fonksiyonlarını çağırır.