Я работаю над автоматизацией нескольких приложений. Одно зависит от выхода другого.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь получить доступ к Treeview
для получения дополнительной информации, счетчик возвращает 0.
Если я смотрю на это заметно, на нем довольно много предметов.
Если я смотрю на него с помощью Winspector, он сообщает о 0 видимых элементах.
Как я могу собрать эту информацию? Это информация, которая собирается динамически и из нескольких мест. Я не могу получить доступ к базам данных (это было бы неплохо, но поскольку некоторая информация является динамической, это невозможно).
Вот вывод, который мне дает Winspector:
Properties for window: 0x00021806
Class Name: SysTreeView32
Rectangle: 213, 180, 1038, 375
Size: 825, 195
Client Rectangle: 0, 0, 821, 191
Client Size: 821, 191
Styles: WS_CHILD,
WS_VISIBLE,
WS_CLIPSIBLINGS,
WS_CLIPCHILDREN,
WS_TABSTOP,
StylesEx: WS_EX_NOPARENTNOTIFY,
WS_EX_CLIENTEDGE,
WS_EX_LEFT,
WS_EX_LTRREADING,
WS_EX_RIGHTSCROLLBAR
ID: 0
Properties: Atom: #43288 0xFFFFFFFF (-1)
Class specific: Visible items:0,
Total items: 0
Window is Ansi
Owner EXE c:\csg\acsr\XBOI.EXE
Есть идеи, как я могу получить информацию об узле и элементах?
Я использую VBA (доступ) с вызовами API с sendmessage.
Вот мой код, который я использую для проверки количества предметов:
Sub testtree(mytv As Long)
Dim z As Long
Dim wClass As String, wText As String
Dim hWndTvw As Long
Dim hNode As Long
Dim varReturn As Long
Dim tvcount As Long
Dim hchild As Long
Dim j As Integer
hchild = mytv
wClass = Space(64)
j = GetClassName(hchild, wClass, 63)
wClass = Left(wClass, j)
wText = Space(256)
j = SendMessageS(hchild, WM_GETTEXT, 255, wText)
wText = Left(wText, j)
Debug.Print wText
z = SendMessage(mytv, TVM_GETCOUNT, 0&, 0&)
MsgBox z
End Sub
Спасибо!