我试图找到Windows上“服务”窗口(“开始”->“运行”->“Services.msc”)中包含的列表项。该列表项名为“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!");
}

“找到了弧服务元素!”分支从未输入。

以下是Inspect中描述元素的详细信息:

任何帮助将不胜感激。谢谢!

最佳答案

令人费解的是,以管理员身份运行UIA客户端会看到该组件,但以登录用户身份运行却没有。目前,我可以提高我的流程,但是我将继续研究该问题以获得更详细的解释。

09-07 09:40