Condividi tramite


messaggio WM_GETOBJECT

Inviato da Microsoft Active Accessibility e Microsoft Automazione interfaccia utente per ottenere informazioni su un oggetto accessibile contenuto in un'applicazione server.

Le applicazioni non inviano mai direttamente questo messaggio. Microsoft Active Accessibility invia questo messaggio in risposta alle chiamate a AccessibleObjectFromPoint, AccessibleObjectFromEvent o AccessibleObjectFromWindow. Tuttavia, le applicazioni server gestiscono questo messaggio. Automazione interfaccia utente invia questo messaggio in risposta alle chiamate a IUIAutomation::ElementFromHandle, ElementFromPoint e GetFocusedElement e quando gestisce gli eventi per cui è stato registrato un client.

dwFlags = (WPARAM)(DWORD) wParam;
dwObjId = (LPARAM)(DWORD) lParam;

Parametri

dwFlags

Fornisce informazioni aggiuntive sul messaggio e viene usato solo dal sistema. I server passano dwFlags come parametro wParam nella chiamata a LresultFromObject durante la gestione del messaggio.

dwObjId

Identificatore dell'oggetto. Questo valore è una delle costanti dell'identificatore dell'oggetto o un identificatore di oggetto personalizzato. Un'applicazione server deve controllare questo valore per identificare il tipo di informazioni richieste. Prima di confrontare questo valore con i valori OBJID_, il server deve eseguirne il cast in DWORD; in caso contrario, in Windows a 64 bit, l'estensione di segno dell'lParam può interferire con il confronto.

  • Se dwObjId è uno dei valori OBJID_, ad esempio OBJID_CLIENT, la richiesta è per un oggetto Microsoft Active Accessibility che implementa IAccessibile.
  • Se dwObjId è uguale a UiaRootObjectId, la richiesta è per un provider di Automazione interfaccia utente. Se il server implementa Automazione interfaccia utente, deve restituire un provider usando la funzione UiaReturnRawElementProvider.
  • Se dwObjId è OBJID_NATIVEOM, la richiesta è per il modello a oggetti sottostante del controllo. Se il controllo supporta questa richiesta, deve restituire un'interfaccia COM appropriata chiamando la funzione LresultFromObject .
  • Se dwObjId è OBJID_QUERYCLASSNAMEIDX, la richiesta consiste nel identificare il controllo come un controllo Windows standard o un controllo comune implementato dalla libreria di controlli comune (ComCtrl.dll).

Valore restituito

Se la finestra o il controllo non devono rispondere a questo messaggio, deve passare il messaggio alla funzione DefWindowProc ; in caso contrario, la finestra o il controllo devono restituire un valore che corrisponde alla richiesta specificata da dwObjId:

  • Se la finestra o il controllo implementa Automazione interfaccia utente, la finestra o il controllo devono restituire il valore ottenuto da una chiamata alla funzione UiaReturnRawElementProvider.
  • Se dwObjId è OBJID_NATIVEOM e la finestra espone un modello a oggetti nativo, le finestre devono restituire il valore ottenuto da una chiamata alla funzione LresultFromObject .
  • Se dwObjId è OBJID_CLIENT e la finestra implementa IAccess, la finestra deve restituire il valore ottenuto da una chiamata alla funzione LresultFromObject .

Commenti

Quando un client chiama AccessibleObjectFromWindow o una delle altre funzioni AccessibleObjectFromX che recuperano un'interfaccia a un oggetto, Microsoft Active Accessibility invia il messaggio di WM_GETOBJECT alla procedura di finestra appropriata all'interno dell'applicazione server appropriata. Durante l'elaborazione WM_GETOBJECT, le applicazioni server chiamano LresultFromObject e usano il valore restituito di questa funzione come valore restituito per il messaggio. L'accessibilità attiva Microsoft, insieme alla libreria COM, esegue il marshalling appropriato e passa il puntatore dell'interfaccia dal server di nuovo al client.

I server non rispondono a WM_GETOBJECT prima che l'oggetto sia completamente inizializzato o dopo che inizia a chiudere. Quando un'applicazione crea una nuova finestra, il sistema invia EVENT_OBJECT_CREATE per notificare ai client prima di inviare il messaggio di WM_CREATE alla procedura della finestra dell'applicazione. Poiché molte applicazioni usano WM_CREATE per avviare il processo di inizializzazione, i server non rispondono al messaggio di WM_GETOBJECT fino al termine dell'elaborazione del messaggio di WM_CREATE .

Un server usa WM_GETOBJECT per eseguire le attività seguenti:

Per i client, ciò significa che potrebbero ricevere puntatori di interfaccia distinti per lo stesso elemento dell'interfaccia utente, a seconda dell'azione del server. Per determinare se due puntatori di interfaccia puntano allo stesso elemento dell'interfaccia utente, i client confrontano le proprietà IAccessi dell'oggetto. Il confronto tra puntatori non funziona.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows Server 2003 [solo app desktop]
Componente ridistribuibile
Accessibilità attiva 1.3 RDK in Windows NT 4.0 con SP6 e versioni successive e Windows 95
Intestazione
Winuser.h (include Windows.h)

Vedi anche

Come gestire WM_GETOBJECT

Funzionamento WM_GETOBJECT

LresultFromObject