2014-09-29 76 views
1

我试图找到Windows中服务窗口(开始 - >运行 - > Services.msc)中包含的列表项。该列表项名为“Arc Service”,可以使用Inspect轻松找到,但我的代码无法找到它。这是一个相对简单的例子,我觉得我一定在做错事。rootElement-> FindFirst(...)无法找到检测到的元素

有问题的代码是:

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!"); 
} 

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

下面是从检查描述元件的细节:

MS Inspect Details

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

回答

1

在测验中,事实证明,以管理员身份运行我的UIA客户端可以看到组件,但以登录用户身份运行时不会。现在我可以提升我的过程,但我会继续研究这个问题,以获得更详细的解释。