我正在努力使多個應用程序自動化。一個取決於另一個的輸出。 我遇到的問題是,當我嘗試訪問Treeview
以獲取其他信息時,計數返回0.自動化第三方應用程序 - Systreeview32報告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
任何想法如何,我可以檢索的節點信息和項目? 我正在使用帶有sendmessage的API調用的VBA(訪問)。
這裏是我的代碼,我使用的測試項目數:
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
謝謝!
Soonts,謝謝你的回覆!我會在今天進行測試。 – user778115 2011-06-05 17:02:00
至於撰寫COM的問題,我不太熟悉。我已經在大部分時間成功地完成API函數的轉換,然後使用它與不同存儲空間中的程序進行通信。 – user778115 2011-06-05 17:03:49