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.
Argomenti correlati
-
Informazioni concettuali
-
Cenni preliminari sugli eventi di automazione interfaccia utente