Gestione del messaggio di WM_GETOBJECT
Sia Microsoft Active Accessibility che Microsoft Automazione interfaccia utente inviare il messaggio di WM_GETOBJECT a un server o a un'applicazione provider per recuperare informazioni su un oggetto accessibile supportato dal server o dal provider. I client non inviano mai direttamente WM_GETOBJECT . Microsoft Active Accessibility invia invece questo messaggio quando un client chiama le funzioni AccessibleObjectFromPoint, AccessibleObjectFromEvent e AccessibleObjectFromWindow . Automazione interfaccia utente invia WM_GETOBJECT quando un client chiama IUIAutomation::ElementFromHandle, ElementFromPoint e GetFocusedElement e quando gestisce gli eventi per cui è stato registrato il client.
L'accessibilità attiva Microsoft o Automazione interfaccia utente specifica il tipo di oggetto necessario per il passaggio di un valore denominato identificatore di oggetto con il messaggio di WM_GETOBJECT. Quando riceve il messaggio, il server o il provider esamina l'identificatore dell'oggetto per determinare come rispondere al messaggio. La risposta dipende dal fatto che l'applicazione ricevente implementi Microsoft Active Accessibility (un server), Automazione interfaccia utente (provider) o nessuno dei due per l'oggetto specificato.
- Se l'applicazione ricevente è un server di accessibilità Microsoft Active e il messaggio di WM_GETOBJECT include un identificatore di oggetto di OBJID_CLIENT, il server deve restituire il valore ottenuto passando l'interfaccia IAccess dell'oggetto alla funzione LresultFromObject .
- Se l'applicazione ricevente è un provider di Automazione interfaccia utente e l'identificatore dell'oggetto è UiaRootObjectId, il provider deve restituire l'interfaccia IRawElementProviderSimple dell'oggetto. Il provider ottiene l'interfaccia chiamando la funzione UiaReturnRawElementProvider .
- Se l'applicazione ricevente implementa né Microsoft Active Accessibility né Automazione interfaccia utente, deve passare il messaggio di WM_GETOBJECT alla funzione DefWindowProc. Il passaggio del messaggio consente al framework di accessibilità di determinare se un proxy è disponibile per l'oggetto specificato.
- Se l'identificatore dell'oggetto non è OBJID_CLIENT né UiaRootObjectId, l'applicazione ricevente deve passare il messaggio di WM_GETOBJECT alla funzione DefWindowProc . Il passaggio del messaggio consente al framework di accessibilità di usare i provider predefiniti per gli elementi dell'interfaccia utente standard.
L'accessibilità attiva Microsoft e Automazione interfaccia utente possono passare identificatori di oggetto personalizzati in un messaggio di WM_GETOBJECT per recuperare valori o oggetti definiti dall'applicazione da un server o da un provider. Il OBJID_NATIVEOM o OBJID_QUERYCLASSNAMEIDX identificatore dell'oggetto può essere usato per recuperare un'interfaccia del modello a oggetti nativo o per richiedere un oggetto proxy specifico supportato da Oleacc.dll.
Gestendo sia gli identificatori dell'oggetto OBJID_CLIENT che uiaRootObjectId, un'implementazione del server di accessibilità microsoft può esistere insieme a un'implementazione del provider di Automazione interfaccia utente. Poiché la maggior parte dei controlli Windows standard e i controlli comuni implementati dalla libreria di controlli comuni (ComCtl32.dll) non implementano Microsoft Active Accessibility o Automazione interfaccia utente, questi controlli in genere non gestiscono il messaggio di WM_GETOBJECT. Il framework Microsoft Active Accessibility o Automazione interfaccia utente verifica invece se un oggetto proxy è disponibile per un determinato elemento dell'interfaccia utente. In caso contrario, fornisce l'oggetto proxy predefinito per l'oggetto finestra host.