Che cosa sono WinEvents?

Le applicazioni server e il sistema operativo usano WinEvents per notificare ai client quando si verifica una modifica nel sistema o nell'interfaccia utente.

Il supporto di WinEvent è una funzionalità del sistema operativo Windows che fornisce:

  • Un modo semplice per registrare i client per le notifiche degli eventi.
  • Meccanismo per l'inserimento del codice client nei server.
  • Routing di eventi da server a client interessati.
  • Generazione automatica degli eventi per la maggior parte dei controlli basati su HWND.

La generazione di eventi per i controlli basati su HWND è particolarmente importante per gli sviluppatori del server. L'esecuzione dell'accessibilità attiva Microsoft fornisce proxy IAccessi per tutti gli elementi dell'interfaccia utente standard. Analogamente, il sistema genera automaticamente i winEvent appropriati ogni volta che crea, distrugge, sposta, ridimensiona o esegue qualsiasi altra azione su un controllo basato su HWND.

Alcuni eventi WinEvent, inclusi gli eventi HWND generali, sono supportati automaticamente dal sistema. Altri tipi di WinEvent, ad esempio modifiche dello stato o eventi di selezione specifici di un particolare controllo, sono supportati dai server Di accessibilità Microsoft Active.

Quando si verifica un evento che influisce sull'interfaccia utente, i server possono trasmettere una notifica evento a tutti i client interessati chiamando la funzione NotifyWinEvent . La chiamata alla funzione include informazioni che identificano il tipo di evento che si è verificato e l'elemento dell'interfaccia utente a cui si applica l'evento. I client possono usare queste informazioni per recuperare un oggetto IAccessibile per l'elemento dell'interfaccia utente e raccogliere altre informazioni.

Ad esempio, per notificare ai client che il nome di un controllo è cambiato, un server chiama NotifyWinEvent e passa EVENT_OBJECT_NAMECHANGE nel parametro evento. Il sistema risponde determinando quali client hanno registrato per ricevere tale evento specifico e chiama la funzione di callback registrata. Se non sono stati registrati client per l'evento, la chiamata del server a NotifyWinEvent è paragonabile a un'operazione "no" e l'impatto sulle prestazioni è trascurabile.

I server chiamano NotifyWinEvent per annunciare l'evento al sistema dopo che si è verificato l'evento. Non devono mai notificare al sistema un evento prima che si verifichi l'evento.

Per ricevere una notifica agli eventi, i client registrano funzioni di callback usando SetWinEventHook. I client impostano una singola funzione di hook per tutti gli eventi possibili o più funzioni di hook per intervalli discreti di eventi. Per altre informazioni, vedere Registrazione di una funzione Hook.

Quando Microsoft Active Accessibility riceve una notifica a un evento, chiama tutte le funzioni di hook registrate per tale evento, passando i parametri da NotifyWinEvent.