Come trovare elementi dell'interfaccia utente
Questo argomento contiene codice di esempio che illustra come trovare elementi dell'interfaccia utente nell'albero Automazione interfaccia utente.
Ricerca di un elemento in base al nome
Nell'esempio seguente viene trovato l'elemento microsoft Automazione interfaccia utente con il nome specificato ed è figlio della finestra desktop.
IUIAutomationElement* GetTopLevelWindowByName(LPWSTR windowName)
{
if (windowName == NULL)
{
return NULL;
}
VARIANT varProp;
varProp.vt = VT_BSTR;
varProp.bstrVal = SysAllocString(windowName);
if (varProp.bstrVal == NULL)
{
return NULL;
}
IUIAutomationElement* pRoot = NULL;
IUIAutomationElement* pFound = NULL;
// Get the desktop element.
HRESULT hr = g_pAutomation->GetRootElement(&pRoot);
if (FAILED(hr) || pRoot == NULL)
goto cleanup;
// Get a top-level element by name, such as "Program Manager"
IUIAutomationCondition* pCondition;
hr = g_pAutomation->CreatePropertyCondition(UIA_NamePropertyId, varProp, &pCondition);
if (FAILED(hr))
goto cleanup;
pRoot->FindFirst(TreeScope_Children, pCondition, &pFound);
cleanup:
if (pRoot != NULL)
pRoot->Release();
if (pCondition != NULL)
pCondition->Release();
VariantClear(&varProp);
return pFound;
}
Ricerca di elementi correlati
La funzione di esempio seguente restituisce una raccolta di tutti i pulsanti abilitati figlio dell'elemento specificato.
IUIAutomationElementArray* GetEnabledButtons(IUIAutomationElement* pParent)
{
if (pParent == NULL)
{
return NULL;
}
IUIAutomationCondition* pButtonCondition = NULL;
IUIAutomationCondition* pEnabledCondition = NULL;
IUIAutomationCondition* pCombinedCondition = NULL;
IUIAutomationElementArray* pFound = NULL;
// Create a property condition for the button control type.
VARIANT varProp;
varProp.vt = VT_I4;
varProp.lVal = UIA_ButtonControlTypeId;
g_pAutomation->CreatePropertyCondition(UIA_ControlTypePropertyId, varProp, &pButtonCondition);
if (pButtonCondition == NULL)
goto cleanup;
// Create a property condition for the enabled property.
varProp.vt = VT_BOOL;
varProp.boolVal = VARIANT_TRUE;
g_pAutomation->CreatePropertyCondition(UIA_IsEnabledPropertyId, varProp, &pEnabledCondition);
if (pEnabledCondition == NULL)
goto cleanup;
// Combine the conditions.
g_pAutomation->CreateAndCondition(pButtonCondition, pEnabledCondition, &pCombinedCondition);
if (pCombinedCondition == NULL)
goto cleanup;
// Find the matching elements. Note that if the scope is changed to TreeScope_Descendants,
// system buttons on the caption bar will be found as well.
pParent->FindAll(TreeScope_Children, pCombinedCondition, &pFound);
cleanup:
if (pButtonCondition != NULL)
pButtonCondition->Release();
if (pEnabledCondition != NULL)
pEnabledCondition->Release();
if (pCombinedCondition != NULL)
pCombinedCondition->Release();
return pFound;
}
Argomenti correlati
-
Informazioni concettuali