1

3 つのリスト (SysListView32) を持つウィンドウからデータを取得しようとしています。UISpy と Inspect の両方で 3 つの行とセルが表示されますが、コードではそのうちの 2 つが完全に機能します (Caption="List2" と Caption="List3")。 3 番目には、白い空の文字列のみが含まれます。

私が試してみると:

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 を使用すると、すべてが検出されることに注意することが重要です。また、Automation でマネージド バージョンとアンマネージド バージョンの両方を試しましたが、まったく同じ結果が得られました。

Windows Server 2008 R2 を使用しています。

スクリーンショットは次のとおりです。 ここに画像の説明を入力

前もって感謝します

4

1 に答える 1

0

ScrollItemPattern.ScrollIntoView()を使用して表示する必要があります。

var pattern = (ScrollItemPattern)aeDataGridCell
    .GetCurrentPattern(ScrollItemPatternIdentifiers.Pattern);
pattern.ScrollIntoView();
于 2013-09-07T05:38:53.947 に答える