2014-09-29 28 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客戶端可以看到組件,但以登錄用戶身份運行時不會。現在我可以提升我的過程,但我會繼續研究這個問題,以獲得更詳細的解釋。