Bagikan melalui


Apa itu WinEvents?

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

Dukungan WinEvent adalah fitur sistem operasi Windows yang menyediakan:

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

Pembuatan peristiwa untuk kontrol berbasis HWND sangat penting bagi pengembang server. Run-time Aksesibilitas Aktif Microsoft menyediakan proksi IAccessible untuk semua elemen UI 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 fungsi NotifyWinEvent . Panggilan fungsi mencakup informasi yang mengidentifikasi jenis peristiwa yang terjadi, dan elemen UI tempat peristiwa berlaku. Klien dapat menggunakan informasi ini untuk mengambil objek IAccessible untuk elemen UI dan mengumpulkan informasi selengkapnya.

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 diberi tahu tentang peristiwa, klien mendaftarkan fungsi hook panggilan balik dengan menggunakan SetWinEventHook. Klien menetapkan fungsi kait tunggal untuk semua kemungkinan peristiwa atau beberapa fungsi kait untuk rentang peristiwa diskrit. Untuk informasi selengkapnya, lihat Mendaftarkan Fungsi Hook.

Saat Microsoft Active Accessibility diberi tahu tentang suatu peristiwa, ini memanggil fungsi hook apa pun yang terdaftar untuk peristiwa tersebut, meneruskan parameter dari NotifyWinEvent.