Berlangganan Peristiwa Automasi UI
Microsoft UI Automation memungkinkan klien untuk berlangganan peristiwa yang menarik. Kemampuan ini meningkatkan performa dengan menghilangkan kebutuhan untuk terus melakukan polling elemen UI dalam sistem untuk melihat apakah ada informasi, struktur, atau status yang telah berubah.
Efisiensi juga ditingkatkan dengan kemampuan untuk mendengarkan peristiwa hanya dalam lingkup yang ditentukan. Misalnya, klien dapat mendengarkan perubahan pilihan pada item dalam daftar, pada daftar itu sendiri, atau di seluruh kotak dialog.
Catatan
Jangan berasumsi bahwa semua kemungkinan peristiwa dimunculkan oleh penyedia Automation UI. Misalnya, tidak semua perubahan properti menyebabkan peristiwa dinaikkan oleh penyedia proksi standar untuk kontrol Formulir Windows dan Microsoft Win32.
Untuk tampilan yang lebih luas tentang peristiwa UI Automation, lihat Ringkasan Peristiwa UI Automation .
Catatan
Sebelum menerapkan penanganan aktivitas, Anda harus terbiasa dengan masalah utas yang dijelaskan dalam Memahami Masalah Utas.
Topik ini berisi bagian berikut.
Mendaftarkan Penanganan Aktivitas
Aplikasi klien berlangganan peristiwa dari jenis tertentu dengan mendaftarkan penanganan aktivitas, menggunakan salah satu metode IUIAutomation berikut.
Metode Langganan | Jenis Acara | Antarmuka Panggilan Balik |
---|---|---|
AddFocusChangedEventHandler | Perubahan fokus | IUIAutomationFocusChangedEventHandler |
AddPropertyChangedEventHandler, AddPropertyChangedEventHandlerNativeArray | Perubahan properti | IUIAutomationPropertyChangedEventHandler |
AddStructureChangedEventHandler | Perubahan struktur | IUIAutomationStructureChangedEventHandler |
AddNotificationEventHandler | Pemberitahuan | IUIAutomationNotificationEventHandler |
AddAutomationEventHandler | Peristiwa lainnya | IUIAutomationEventHandler |
Saat klien menambahkan penanganan aktivitas untuk semua turunan (TreeScope_Descendants), UI Automation hanya menambahkan satu handler untuk akar sub-pohon, dan handler mendengarkan semua keturunan. Automasi UI tidak menambahkan penanganan aktivitas secara rekursif.
Ketika klien memanggil metode IUIAutomation::RemoveAllEventHandlers , Automation UI menghapus semua penanganan aktivitas dari proses klien.
Untuk menerima dan menangani peristiwa, Anda menerapkan objek penanganan peristiwa yang mengekspos antarmuka panggilan balik, dan Anda harus mendaftarkan objek dengan memanggil metode pendaftaran peristiwa seperti IUIAutomation::AddPropertyChangedEventHandler. Antarmuka panggilan balik memiliki satu metode; Automasi UI memanggil metode ini saat peristiwa diproses.
Saat dimatikan, atau ketika peristiwa Otomatisasi UI tidak lagi menarik bagi aplikasi, klien Automation UI harus memanggil satu atau beberapa metode IUIAutomation berikut.
Catatan
Klien Automation UI tidak boleh menggunakan beberapa utas untuk menambahkan atau menghapus penanganan aktivitas. Perilaku tak terduga dapat mengakibatkan satu penanganan aktivitas ditambahkan atau dihapus saat yang lain sedang ditambahkan atau dihapus dalam proses klien yang sama.
Metode | Deskripsi |
---|---|
RemoveAutomationEventHandler | Membatalkan pendaftaran penanganan aktivitas yang didaftarkan dengan menggunakan AddAutomationEventHandler. |
RemoveFocusChangedEventHandler | Membatalkan pendaftaran penanganan aktivitas yang didaftarkan dengan menggunakan AddFocusChangedEventHandler. |
RemovePropertyChangedEventHandler | Membatalkan pendaftaran penanganan aktivitas yang didaftarkan dengan menggunakan AddPropertyChangedEventHandler atau AddPropertyChangedEventHandlerNativeArray. |
RemoveStructureChangedEventHandler | Membatalkan pendaftaran penanganan aktivitas yang didaftarkan dengan menggunakan AddStructureChangedEventHandler. |
RemoveNotificationEventHandler | Membatalkan pendaftaran penanganan aktivitas yang weas terdaftar dengan menggunakan AddNotificationEventHandler. |
RemoveAllEventHandlers | Batalkan pendaftaran semua penanganan aktivitas yang terdaftar. |
Dimungkinkan bagi peristiwa untuk dikirimkan ke penanganan aktivitas setelah handler dihentikan langganannya, jika peristiwa diterima bersamaan dengan permintaan untuk berhenti berlangganan acara. Praktik terbaik adalah mengikuti standar Model Objek Komponen (COM) dan menghindari penghancurkan objek penanganan aktivitas hingga jumlah referensinya mencapai nol. Menghancurkan penanganan aktivitas segera setelah berhenti berlangganan peristiwa dapat mengakibatkan pelanggaran akses jika suatu peristiwa dikirim terlambat.
Contoh
Untuk contoh kode yang menunjukkan cara menangani peristiwa Otomatisasi UI, lihat Cara Menerapkan Penanganan Aktivitas.
Topik terkait