UI オートメーション プロバイダーからプロパティを返す方法
このトピックには、Microsoft UI オートメーション プロバイダーが UI 要素のプロパティをクライアント アプリケーションに返す方法を示すコード例が含まれています。
プロバイダーからプロパティ値を取得するには、UI オートメーションはプロバイダーの IRawElementProviderSimple::GetPropertyValue メソッドの実装を呼び出し、取得するプロパティの ID と 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;
}
関連トピック