如何從消費者介面自動化提供者傳回屬性
本主題包含範例程式碼,示範 Microsoft 消費者介面自動化提供者如何將 UI 元素的屬性傳回給用戶端應用程式。
若要從提供者擷取屬性值,消費者介面自動化呼叫提供者的IRawElementProviderSimple::GetPropertyValue方法實作、傳遞要擷取的屬性識別碼,以及VARIANT結構的指標。 如果提供者支援指定的屬性,它會將屬性的資料類型和值複製到 VARIANT 結構中。 如果不支援 屬性,提供者會將VARIANT結構的vt成員設定為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;
}
相關主題