Bagikan melalui


Apa itu WinEvents?

Aplikasi server dan sistem operasi menggunakan WinEvents untuk memberi tahu klien ketika perubahan terjadi di sistem atau di antarmuka pengguna.

Dukungan WinEvent adalah fitur dari sistem operasi Windows yang menyediakan:

  • Cara sederhana bagi klien untuk mendaftar untuk pemberitahuan peristiwa.
  • Mekanisme untuk menyuntikkan kode klien ke server.
  • Penyaluran peristiwa dari server ke klien yang tertarik.
  • Pembuatan peristiwa otomatis untuk sebagian besar kontrol yang berbasis HWND.

Pembangkitan peristiwa untuk kontrol berbasis HWNDsangat penting bagi pengembang server. Aksesibilitas Aktif Microsoft runtime menyediakan IAccessible proksi untuk semua elemen antarmuka pengguna standar. Demikian pula, sistem secara otomatis menghasilkan WinEvents yang sesuai setiap kali membuat, menghancurkan, memindahkan, mengubah ukuran, atau melakukan tindakan lain pada kontrol berbasis HWND .

Beberapa WinEvents, termasuk peristiwa HWND umum, secara otomatis didukung oleh sistem. Jenis WinEvents lainnya, seperti perubahan status atau peristiwa pemilihan khusus untuk kontrol tertentu, didukung oleh server Aksesibilitas Aktif Microsoft.

Ketika peristiwa terjadi yang memengaruhi UI, server dapat menyiarkan pemberitahuan peristiwa ke semua klien yang tertarik dengan memanggil fungsiNotifyWinEvent. Panggilan fungsi mencakup informasi yang mengidentifikasi jenis peristiwa yang terjadi, dan elemen UI tempat peristiwa berlaku. Klien-klien dapat menggunakan informasi ini untuk mengambil objek IAccessible untuk elemen UI dan mengumpulkan informasi lebih lanjut.

Misalnya, untuk memberi tahu klien bahwa nama kontrol telah berubah, server memanggil NotifyWinEvent dan meneruskan EVENT_OBJECT_NAMECHANGE dalam parameter peristiwa. Sistem merespons dengan menentukan klien mana yang telah mendaftar untuk menerima peristiwa tertentu dan memanggil fungsi panggilan balik terdaftar mereka. Jika tidak ada klien yang mendaftar untuk peristiwa tersebut, panggilan server ke NotifyWinEvent sebanding dengan "tanpa operasi" dan dampak performa dapat diabaikan.

Server memanggil NotifyWinEvent untuk mengumumkan peristiwa ke sistem setelah peristiwa terjadi. Mereka tidak boleh memberi tahu sistem peristiwa sebelum peristiwa terjadi.

Untuk mendapatkan notifikasi tentang peristiwa, klien mendaftarkan fungsi panggilan balik hook dengan menggunakan SetWinEventHook. Klien menetapkan fungsi kait tunggal untuk semua kemungkinan peristiwa atau beberapa fungsi kait untuk rentang peristiwa yang berbeda. Untuk informasi selengkapnya, lihat Mendaftarkan Fungsi Hook.

Saat Microsoft Active Accessibility diberi tahu tentang suatu peristiwa, ia memanggil fungsi kait apa pun yang didaftarkan untuk peristiwa tersebut, menggunakan parameter dari NotifyWinEvent.