Comment retourner des propriétés à partir d’un fournisseur de UI Automation
Cette rubrique contient un exemple de code qui montre comment un fournisseur microsoft UI Automation retourne les propriétés d’un élément d’interface utilisateur aux applications clientes.
Pour récupérer une valeur de propriété à partir du fournisseur, UI Automation appelle l’implémentation d’un fournisseur de la méthode IRawElementProviderSimple::GetPropertyValue, en passant l’ID de la propriété à récupérer et un pointeur vers une structure VARIANT. Si le fournisseur prend en charge la propriété spécifiée, il copie le type de données et la valeur de la propriété dans la structure VARIANT . Si la propriété n’est pas prise en charge, le fournisseur définit le membre vt de la structure VARIANT sur VT_EMPTY.
IFACEMETHODIMP Provider::GetPropertyValue(PROPERTYID propertyId, VARIANT* pRetVal)
{
// The Name property is typically the same as the Caption property of the
// control window, if it has one. Here, the Name is overridden for the
// sake of illustration.
if (propertyId == UIA_NamePropertyId)
{
pRetVal->vt = VT_BSTR;
pRetVal->bstrVal = SysAllocString(L"Custom button");
}
else if (propertyId == UIA_ControlTypePropertyId)
{
pRetVal->vt = VT_I4;
pRetVal->lVal = UIA_ButtonControlTypeId;
}
else if (propertyId == UIA_IsContentElementPropertyId)
{
pRetVal->vt = VT_BOOL;
pRetVal->lVal = TRUE;
}
else if (propertyId == UIA_IsControlElementPropertyId)
{
pRetVal->vt = VT_BOOL;
pRetVal->lVal = TRUE;
}
//
// Return other properties as appropriate for the control type.
//
else
{
pRetVal->vt = VT_EMPTY;
// UI Automation will attempt to get the property from the
// provider for window that hosts the control.
}
return S_OK;
}
Rubriques connexes