我正在尝试从具有 3 个列表 (SysListView32) 的窗口中获取数据。我对它们三个都做了同样的事情,UISpy 和 Inspect 都可以看到它们三个中的行和单元格,但是在代码中它们中的两个可以完美运行(Caption="List2" 和 Caption="List3"),但是第三个只包含白色的空字符串。
如果我尝试:
IntPtr PrizeListHandle = Win32Utils.FindWindowByCaption(Lobby, "List1");
IUIAutomationElement dataGridPrizes = autom.ElementFromHandle(PrizeListHandle);
IUIAutomationGridPattern gridPrizes = dataGridPrizes.GetCurrentPattern(10006);
string linea = gridPrizes.GetItem(0, 0).CurrentName;
linea变为空字符串,gridPrizes 有 17 行 3 列,所有单元格都是空字符串。
如果我尝试:
IntPtr PrizeListHandle = Win32Utils.FindWindowByCaption(Lobby, "List1");
IUIAutomationElement dataGridPrizes = autom.ElementFromHandle(PrizeListHandle);
int propIdClassName = 30004; // UIA_ClassNamePropertyId;
IUIAutomationPropertyCondition conditionListItem = (IUIAutomationPropertyCondition)autom.CreatePropertyCondition(propIdClassName, "list item");
IUIAutomationElementArray children = dataGridPrizes.FindAll(interop.UIAutomationCore.TreeScope.TreeScope_Children, conditionListItem);
int i = children.Length;
我是0。为什么?
重要的是要注意,当使用 UISpy 时,它会发现一切。此外,我已经尝试在自动化上管理一个非托管版本,结果完全相同。
我正在使用 Windows Server 2008 R2。
这是一个屏幕截图:
先感谢您