rootElement- & gt; FindFirst (…) не может найти элемент, видимый Inspect

Я пытаюсь найти элемент списка, содержащийся в окне служб (Пуск-> Выполнить-> Службы.msc) в Windows. Элемент списка называется «Arc Service» и его легко найти с помощью Inspect, но мой код не может его найти. Это относительно простой случай, я чувствую, что, должно быть, делаю что-то не так.

Код в вопросе:

VARIANT arcServiceNameVariant;
VariantInit(&arcServiceNameVariant);
arcServiceNameVariant.vt = VT_BSTR;
arcServiceNameVariant.bstrVal = L"Arc Service";

CComPtr<IUIAutomationCondition> arcServiceNameCondition;
hr = g_pAutomation->CreatePropertyCondition(UIA_NamePropertyId, arcServiceNameVariant, &arcServiceNameCondition.p);

if(SUCCEEDED(hr)) {
CComPtr<IUIAutomationElement> arcServiceElement;
hr = rootElement->FindFirst(TreeScope_Descendants, arcServiceNameCondition, &arcServiceElement.p);
if(SUCCEEDED(hr)) {
if(arcServiceElement.p) {
logInfo(L"Arc Service element found!");
}
} else {
logInfo(L"FindFirst failed!");
}
} else {
logInfo(L"Failed to create property condition!");
}

«Элемент Arc Service найден!» ветка никогда не вводится.

Вот подробности из Inspect, описывающие элемент:

MS осмотреть детали

Будем очень благодарны любой помощи. Спасибо!

1

Решение

Как ни странно, получается, что мой клиент UIA, работающий от имени администратора, видит компонент, а работающий как зарегистрированный пользователь — нет. Пока я могу улучшить свой процесс, но я продолжу исследовать проблему для более подробного объяснения.

1

Другие решения


По вопросам рекламы [email protected]