Condividi tramite


WinEvents e Accessibilità attiva

I server microsoft Active Accessibility generano WinEvents per notificare ai client quando un oggetto accessibile cambia. Esistono numerose condizioni in cui un server invia una notifica a un client di una modifica. Ogni costante evento definita da Microsoft Active Accessibility descrive una condizione sulla quale un client riceve una notifica. Ad esempio, WinEvents può segnalare:

  • Quando un oggetto viene creato o eliminato definitivamente.
  • Quando un oggetto riceve o perde lo stato attivo.
  • Quando lo stato o la posizione di un oggetto cambia.
  • Quando una proprietà di un oggetto viene modificata.

Le applicazioni client non ricevono automaticamente le notifiche degli eventi; devono specificare gli eventi da ricevere chiamando la funzione SetWinEventHook. Con SetWinEventHook, un client esegue la registrazione per ricevere uno o più eventi e imposta una funzione hook per gestire gli eventi specificati. I clienti possono usare la stessa funzione hook per gestire più tipi di eventi oppure possono usare funzioni hook multiple. I client chiamano il SetWinEventHook una volta per ogni funzione hook che deve registrare.

Le funzioni hook si trovano all'interno del corpo del codice del client, in una DLL mappata al processo del client o in una DLL mappata al processo del server. Ognuno di questi metodi presenta vantaggi e svantaggi. Per ulteriori informazioni, vedere le Funzioni hook fuori contesto e,In-Context.

Per segnalare ai client un evento, i server chiamano NotifyWinEvent. Il sistema controlla se le applicazioni client hanno impostato funzioni hook per l'evento e chiamano le funzioni hook appropriate in base alle esigenze.

Quando viene chiamata la funzione hook del client, riceve una serie di parametri che descrivono l'evento e l'oggetto che ha generato l'evento. Per ottenere l'accesso all'oggetto che ha generato l'evento, la funzione hook client chiama AccessibleObjectFromEvent.

Nota

Se non sono stati registrati client per ricevere WinEvent, l'impatto sulle prestazioni su un server per chiamare NotifyWinEvent è trascurabile.

I server chiamano NotifyWinEvent per le modifiche solo nei propri oggetti accessibili; non chiamano NotifyWinEvent per le modifiche apportate agli elementi dell'interfaccia utente forniti dal sistema.

Event-Driven comunicazione

I client devono registrare un hook WinEvent prima di poter ricevere notifiche WinEvent. Per evitare callback non necessari e migliorare le prestazioni, i client sono invitati a registrarsi solo per gli eventi che devono ricevere.

All'interno della routine hook, il client può chiamare AccessibleObjectFromEvent per recuperare un oggetto IAccessible per l'elemento a cui si applica l'evento. Con questo oggetto, il client può iniziare a chiamare metodi di IAccessible per recuperare informazioni o interagire con l'elemento dell'interfaccia utente.

WinEvents