Code: Select all
+ Imagine
| + Cache
| | |---Thumbs.db
+ ImgBurn
| + Log Files
| | |---ImgBurn.logNot working code. I converted it from AutoIt3
Code: Select all
EnableExplicit
; https://www.purebasic.fr/english/viewtopic.php?t=80897
XIncludeFile "WinGetHandle.pb"
Global hTreeView, FilePath$
Global sList$ ; Result, where we return the data
; Path$ = (GetPathPart(ProgramFilename()))
Global Dim aListTree$(3)
aListTree$(0) = "|" + #TAB$
aListTree$(1) = "+----"
aListTree$(2) = "-----"
; Structure TVITEMEX
; mask.l
; PB_Alignment1.b[4]
; hItem.i
; state.l
; stateMask.l
; *pszText
; cchTextMax.l
; iImage.l
; iSelectedImage.l
; cChildren.l
; lParam.i
; iIntegral.l
; PB_Alignment2.b[4]
; EndStructure
; Recursive tree reading
Procedure __TreeViewToText(hItem, sIndent$)
Protected tmp$, pItem.TVITEMEX
Protected f$, sIndentChild$
Repeat
Debug "hItem = " + hItem
pItem\Mask = #TVIF_CHILDREN
pItem\hItem = hItem
SendMessage_(hTreeView, #TVM_GETITEM, 0, @pItem) ; Checking the plus sign. Also checks whether to run a nested clause query
If pItem\cChildren <> 0
f$ = aListTree$(1)
Else
f$ = aListTree$(2)
EndIf
pItem\Mask = #TVIF_TEXT
pItem\cchTextMax = 4096
tmp$ = Space(pItem\cchTextMax)
pItem\pszText = @tmp$
SendMessage_(hTreeView, #TVM_GETITEM, 0, @pItem)
Debug tmp$
; tmp$ = PeekS(pItem\pszText)
sList$ + sIndent$ + f$ + tmp$ + #CRLF$ ; Item text
If pItem\cChildren <> 0
hItem = SendMessage_(hTreeView, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem) ; Requesting the first child item
sIndentChild$ = sIndent$ + aListTree$(0)
__TreeViewToText(hItem, sIndentChild$)
EndIf
hItem = SendMessage_(hTreeView, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem) ; Requesting the next item
Until hItem = #Null ; If not a handle, then an output
EndProcedure
; Конвертирует содержимое TreeView в форматированный текст
Procedure _TreeViewToText(sList$, hTreeView)
Protected hItem
hItem = SendMessage_(hTreeView, #TVM_GETNEXTITEM, #TVGN_ROOT, hItem)
__TreeViewToText(hItem, "")
EndProcedure ;==>_TreeToTxt
Procedure _SaveList()
Protected StartTime, hWnd
; hWnd = WinGetHandle(0, "FileSizesList, (29120 пунктов, за 8 с 805 мс)", 1, #Title, 1) ;
; hWnd = WinGetHandle(0, "Справка PureBasic 5.73 (2024.04.13)", 1, #Title, 1) ;
hWnd = WinGetHandle(0, "Reference PureBasic", 1, #Title, 1) ;
; hWnd = WinGetHandle(0, "#32770", 1, #Class, 0) ; #32770
Debug "hWnd = " + hWnd
If hWnd
hTreeView = WinGetHandle(hwnd, "SysTreeView32", 1, #Class, 0) ; Window -> SysTreeView32
Debug "hTreeView = " + hTreeView
EndIf
; If hWnd
; hTab = WinGetHandle(hwnd, "SysTabControl32", 1, #Class, 0) ; Window -> SysTabControl32
; Debug "SysTabControl32 = " + hTab
; EndIf
;
; If hTab
; hTreeView = WinGetHandle(hTab, "SysTreeView32", 1, #Class, 0) ; Window -> SysTreeView32
; Debug "hTreeView = " + hTreeView
; EndIf
If Not hTreeView
MessageRequester("Message", "hTreeView element not found", 0)
End
EndIf
StartTime = ElapsedMilliseconds()
_TreeViewToText(sList$, hTreeView)
Debug "e has passed " + Str(ElapsedMilliseconds() - StartTime) + " ms"
FilePath$ = "C:\Temp\FileList.txt"
#File = 0
If CreateFile(#File, FilePath$)
WriteStringFormat(#File, #PB_UTF8)
WriteString(#File, sList$, #PB_UTF8)
CloseFile(#File)
EndIf
EndProcedure
; Depth", "|" + @Tab)
; Folder", "+----")
; File", "-----")
_SaveList()