UI Otomasyonu Olaylarına Abone Olma
Microsoft UI Otomasyonu, istemcilerin ilgilendiği olaylara abone olmasını sağlar. Bu özellik herhangi bir bilgi, yapı veya durumun değişip değişmediğini görmek için sistemdeki kullanıcı arabirimi öğelerini sürekli yoklama gereksinimini ortadan kaldırarak performansı artırır.
Verimlilik, yalnızca tanımlı bir kapsamdaki olayları dinleyebilme özelliğiyle de iyileştirilir. Örneğin, bir istemci listedeki bir öğedeki, listenin kendisinde veya iletişim kutusunun tamamında seçim değişikliklerini dinleyebilir.
Not alın
Tüm olası olayların bir UI Otomasyonu sağlayıcısı tarafından tetiklendiğini varsaymayın. Örneğin, tüm özellik değişiklikleri Windows Forms ve Microsoft Win32 denetimleri için standart ara sunucu sağlayıcıları tarafından olayların tetiklenmelerine neden olmaz.
UI Otomasyonu olaylarının daha geniş bir görünümü için bkz. UI Otomasyonu Olaylarına Genel Bakış.
Not
Olay işleyicisi uygulamadan önce, İş Parçacığı Sorunlarını Anlamabölümünde açıklanan iş parçacığı sorunları hakkında bilgi sahibi olmanız gerekir.
Bu konu aşağıdaki bölümleri içerir.
Olay İşleyicilerini Kaydetme
İstemci uygulamaları, aşağıdaki IUIAutomation yöntemlerinden birini kullanarak bir olay işleyicisi kaydederek belirli bir türdeki olaylara abone olur.
Abonelik Yöntemi | Olay Türü | Geri Çağrı Arabirimi |
---|---|---|
AddFocusChangedEventHandler | Odak değişikliği | IUIAutomationFocusChangedEventHandler |
AddPropertyChangedEventHandler, AddPropertyChangedEventHandlerNativeArray | Özellik değişikliği | IUIAutomationPropertyChangedEventHandler |
AddStructureChangedEventHandler | Yapı değişikliği | IUIAutomationStructureChangedEventHandler |
BildirimOlayİşleyiciEkle | Bildirim | IUIAutomationNotificationEventHandler |
AddAutomationEventHandler | Diğer olaylar | IUIAutomationEventHandler |
İstemci tüm alt öğeler (TreeScope_Descendants) için bir olay işleyicisi eklediğinde, UI Otomasyonu alt ağacın kökü için yalnızca bir işleyici ekler ve işleyici tüm alt öğeleri dinler. UI Otomasyonu özyinelemeli olarak olay işleyicileri eklemez.
bir istemci IUIAutomation::RemoveAllEventHandlers yöntemini çağırdığında, UI Otomasyonu istemci işleminden tüm olay işleyicilerini kaldırır.
Olayları almak ve işlemek için, geri çağırma arabirimini kullanıma sunan bir olay işleme nesnesi uygularsınız ve IUIAutomation::AddPropertyChangedEventHandlergibi bir olay kayıt yöntemini çağırarak nesnesini kaydetmeniz gerekir. Geri çağırma arabiriminin tek bir yöntemi vardır; Ui Otomasyonu, olay işlendiğinde bu yöntemi çağırır.
Kapatma sırasında veya UI Otomasyonu olayları artık uygulamayı ilgilendirmediğinde, UI Otomasyonu istemcileri aşağıdaki IUIAutomation yöntemlerinden birini veya daha fazlasını çağırmalıdır.
Not
UI Otomasyonu istemcisi, olay işleyicileri eklemek veya kaldırmak için birden çok iş parçacığı kullanmamalıdır. Aynı istemci işlemine başka bir olay işleyicisi eklenirken veya kaldırılırken beklenmeyen davranış oluşabilir.
Yöntem | Açıklama |
---|---|
RemoveAutomationEventHandler | AddAutomationEventHandlerkullanılarak kaydedilen olay işleyiciyi kayıttan kaldırır. |
RemoveFocusChangedEventHandler | AddFocusChangedEventHandlerkullanılarak kaydedilen olay işleyicinin kaydını kaldırır. |
RemovePropertyChangedEventHandler | AddPropertyChangedEventHandler veya AddPropertyChangedEventHandlerNativeArraykullanılarak kaydedilen olay işleyicinin kaydını kaldırır. |
RemoveStructureChangedEventHandler | AddStructureChangedEventHandlerkullanılarak kaydedilmiş olay işleyicisini kayıttan çıkarır. |
RemoveNotificationEventHandler | AddNotificationEventHandlerkullanılarak kaydedilmiş bir olay işleyicisinin kaydını kaldırır. |
RemoveAllEventHandlers | Tüm kayıtlı olay işleyicilerinin kaydını kaldırır. |
Bir olayın, işleyici aboneliği kaldırıldıktan sonra bir olay işleyicisine teslim edilmesi mümkündür; bu, olay aboneliğini kaldırma isteğiyle aynı anda alındığında gerçekleşebilir. En iyi yöntem, Bileşen Nesne Modeli (COM) standardına uymak ve başvuru sayısı sıfıra ulaşana kadar olay işleyici nesnesini yok etmekten kaçınmaktır. Olaylar için abonelikten çıkıldıktan hemen sonra bir olay işleyicisini yok etmek, bir olay geç teslim edilirse erişim ihlaline neden olabilir.
Örnekler
UI Otomasyonu olaylarının nasıl işleneceğini gösteren kod örnekleri için bkz. Olay İşleyicilerini Uygulama.
İlgili konular