Bagikan melalui


WinEvents dan Aksesibilitas Aktif

Server Aksesibilitas Aktif Microsoft menaikkan WinEvents untuk memberi tahu klien saat objek yang dapat diakses berubah. Ada banyak kondisi di mana server memberi tahu klien tentang perubahan. Setiap konstanta peristiwa yang ditentukan oleh Microsoft Active Accessibility menjelaskan kondisi di mana klien diberi tahu. Misalnya, WinEvents dapat memberi sinyal:

  • Ketika objek dibuat atau dihancurkan.
  • Saat objek menerima atau kehilangan fokus.
  • Saat status atau lokasi objek berubah.
  • Ketika properti objek berubah.

Aplikasi klien tidak menerima pemberitahuan peristiwa secara otomatis; mereka harus menentukan peristiwa mana yang ingin mereka terima dengan memanggil fungsiSetWinEventHook. Dengan SetWinEventHook, klien mendaftar untuk menerima satu atau lebih event dan menetapkan fungsi hook untuk menangani event yang ditentukan. Klien dapat menggunakan fungsi kait yang sama untuk menangani beberapa jenis peristiwa, atau dapat menggunakan beberapa fungsi kait. Client memanggil SetWinEventHook sekali untuk setiap fungsi kait yang perlu didaftarkan.

Fungsi Hook terletak di dalam isi kode klien, dalam DLL yang dipetakan ke dalam proses klien, atau dalam DLL yang dipetakan ke dalam proses server. Masing-masing metode ini memiliki kelebihan dan kekurangan. Untuk informasi selengkapnya, lihat In-Context dan Fungsi Hook Di Luar Konteks.

Untuk memberi tahu klien tentang kejadian peristiwa, server memanggil NotifyWinEvent. Sistem memeriksa apakah ada aplikasi klien yang telah mengatur fungsi kait untuk peristiwa dan memanggil fungsi kait yang sesuai seperlunya.

Ketika fungsi hook klien dipanggil, ia menerima sejumlah parameter yang menjelaskan peristiwa dan objek yang menghasilkan peristiwa. Untuk mendapatkan akses ke objek yang menghasilkan peristiwa, fungsi kait klien memanggil AccessibleObjectFromEvent.

Nota

Jika tidak ada klien yang mendaftar untuk menerima WinEvents, dampak performa pada server untuk memanggil NotifyWinEvent dapat diabaikan.

Server memanggil NotifyWinEvent untuk perubahan hanya di objek yang dapat diakses mereka sendiri; mereka tidak memanggil NotifyWinEvent untuk perubahan elemen antarmuka pengguna yang disediakan sistem.

Event-Driven Komunikasi

Klien harus mendaftarkan hook WinEvent sebelum mereka dapat menerima pemberitahuan WinEvent. Untuk menghindari panggilan balik yang tidak perlu dan meningkatkan performa, klien disarankan untuk mendaftar hanya untuk peristiwa yang perlu mereka terima.

Di dalam prosedur kait, klien dapat memanggil AccessibleObjectFromEvent untuk mengambil objekIAccessibleuntuk elemen tempat peristiwa berlaku. Dengan objek ini, klien dapat mulai memanggil metode IAccessible untuk mengambil informasi atau berinteraksi dengan elemen UI.

WinEvents