Sottoscrizione agli eventi Automazione interfaccia utente

Microsoft Automazione interfaccia utente consente ai client di sottoscrivere eventi di interesse. Questa funzionalità migliora le prestazioni eliminando la necessità di eseguire continuamente il polling degli elementi dell'interfaccia utente nel sistema per verificare se sono state modificate informazioni, struttura o stato.

Una maggiore efficienza è ottenuta anche grazie alla possibilità di restare in ascolto di eventi solo in un ambito definito. Ad esempio, un client può ascoltare le modifiche di selezione in un elemento di un elenco, nell'elenco stesso o in un'intera finestra di dialogo.

Nota

Non presupporre che tutti gli eventi possibili vengano generati da un provider di Automazione interfaccia utente. Ad esempio, non tutte le modifiche delle proprietà causano la generazione di eventi dai provider di proxy standard per i controlli Windows Forms e Microsoft Win32.

 

Per una visualizzazione più ampia degli eventi Automazione interfaccia utente, vedere Panoramica degli eventi Automazione interfaccia utente.

Nota

Prima di implementare un gestore eventi, è necessario avere familiarità con i problemi di threading descritti in Informazioni sui problemi di threading.

 

In questo argomento sono contenute le sezioni seguenti.

Registrazione dei gestori eventi

Le applicazioni client sottoscrivono eventi di un tipo specifico registrando un gestore eventi usando uno dei metodi IUIAutomation seguenti.

Metodo Subscription Tipo evento Interfaccia di callback
AddFocusChangedEventHandler Modifica dello stato attivo IUIAutomationFocusChangedEventHandler
AddPropertyChangedEventHandler, AddPropertyChangedEventHandlerNativeArray Modifica proprietà IUIAutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Modifica struttura IUIAutomationStructureChangedEventHandler
AddNotificationEventHandler Notifica IUIAutomationNotificationEventHandler
AddAutomationEventHandler Altri eventi IUIAutomationEventHandler

 

Quando un client aggiunge un gestore eventi per tutti i discendenti (TreeScope_Descendants), Automazione interfaccia utente aggiunge un solo gestore per la radice dell'albero secondario e il gestore ascolta tutti i discendenti. Automazione interfaccia utente non aggiunge i gestori eventi in modo ricorsivo.

Quando un client chiama il metodo IUIAutomation::RemoveAllEventHandlers, Automazione interfaccia utente rimuove tutti i gestori eventi dal processo client.

Per ricevere e gestire gli eventi, si implementa un oggetto di gestione eventi che espone un'interfaccia di callback e è necessario registrare l'oggetto chiamando un metodo di registrazione eventi, ad esempio IUIAutomation::AddPropertyChangedEventHandler. L'interfaccia di callback ha un singolo metodo; Automazione interfaccia utente chiama questo metodo quando viene elaborato l'evento.

In caso di arresto o quando Automazione interfaccia utente eventi non sono più interessati all'applicazione, Automazione interfaccia utente i client devono chiamare uno o più dei seguenti metodi IUIAutomation.

Nota

Un client Automazione interfaccia utente non deve usare più thread per aggiungere o rimuovere gestori eventi. Il comportamento imprevisto può causare se un gestore eventi viene aggiunto o rimosso mentre un altro viene aggiunto o rimosso nello stesso processo client.

 

Metodo Descrizione
RemoveAutomationEventHandler Annulla la registrazione di un gestore eventi registrato tramite AddAutomationEventHandler.
RemoveFocusChangedEventHandler Annulla la registrazione di un gestore eventi registrato tramite AddFocusChangedEventHandler.
RemovePropertyChangedEventHandler Annulla la registrazione di un gestore eventi registrato usando AddPropertyChangedEventHandler o AddPropertyChangedEventHandlerNativeArray.
RemoveStructureChangedEventHandler Annulla la registrazione di un gestore eventi registrato tramite AddStructureChangedEventHandler.
RemoveNotificationEventHandler Annulla la registrazione di un gestore eventi registrato tramite AddNotificationEventHandler.
RemoveAllEventHandlers Annulla la registrazione di tutti i gestori eventi registrati.

 

È possibile che un evento venga recapitato a un gestore eventi dopo la sottoscrizione del gestore, se l'evento viene ricevuto simultaneamente con la richiesta di annullare la sottoscrizione dell'evento. La procedura consigliata consiste nel seguire lo standard Component Object Model (COM) ed evitare di distruggere l'oggetto gestore eventi fino a quando il numero di riferimenti non ha raggiunto zero. L'eliminazione di un gestore eventi immediatamente dopo l'annullamento della sottoscrizione per gli eventi può causare una violazione di accesso se un evento viene recapitato in ritardo.

Esempio

Per esempi di codice che illustrano come gestire gli eventi Automazione interfaccia utente, vedere Come implementare gestori eventi.

Informazioni concettuali

Cenni preliminari sugli eventi di automazione interfaccia utente

Informazioni sui problemi di threading