Прет!! Нашел ка я однажды на этом форумце скриптик
очень бы хотелось как нить иго изменить так чтобы
1) в инпуте гдет показывал путь файла или каталога
2) чтобы по двойному клику и/или правой кнопки мыши оп файлу/каталогу выводилось окошко/меню можн даже
с адресом данного файла/каталога
для запуска мож воспользоваться этим скриптом к примеру
:'( :'( :'( плииииииииз хэлп
Код:
#Include <GUIConstantsEx.au3>
#Include <GUIImageList.au3>
#Include <GUITreeView.au3>
#Include <TreeViewConstants.au3>
#Include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Global Const $sFile = @ScriptDir & '\tree.txt'
Global $hForm, $hTreeView, $hImageList, $hFile, $sRoot
SplashTextOn(':-)', 'Wait...', 300, 100, Default, Default, 32, 'Tahoma', 18)
$hForm = GUICreate('MyGUI', 600, 600)
GUICtrlCreateTreeView(20, 20, 560, 560, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
$hTreeView = GUICtrlGetHandle(-1)
$hFile = FileOpen(@ScriptDir & '\tree.txt')
$sRoot = FileReadLine($hFile)
If $sRoot Then
$hImageList = _GUIImageList_Create(16, 16, 5, 1)
_GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 3)
_GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 4)
_GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 0)
_GUICtrlTreeView_SetNormalImageList($hTreeView, $hImageList)
_GUICtrlTreeView_BeginUpdate($hTreeView)
_EnumPaths($sRoot)
_GUICtrlTreeView_SetState($hTreeView, _GUICtrlTreeView_GetFirstItem($hTreeView), $TVIS_EXPANDED, 1)
_GUICtrlTreeView_EndUpdate($hTreeView)
EndIf
FileClose($hFile)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
SplashOff()
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _EnumPaths($sRoot, $hItem = 0)
Local $hSubItem, $Data, $Dir, $Path
While 1
$Dir = StringSplit($sRoot, '\')
If StringRight($Dir[$Dir[0] - 1], 1) = ':' Then
$Dir[$Dir[0] - 1] &= '\'
EndIf
$hSubItem = _GUICtrlTreeView_AddChild($hTreeView, $hItem, $Dir[$Dir[0] - 1], 0, 1)
While 1
$Path = FileReadLine($hFile)
Switch @error
Case 0
Case -1
Return 0
Case Else
Return SetError(2, 0, 0)
EndSwitch
If Not $Path Then
ContinueLoop
EndIf
$Dir = StringSplit($Path, '\')
If $Dir[$Dir[0]] Then
If StringRegExpReplace($Path, '\\.[^\\]*\Z', '\\') = $sRoot Then
_GUICtrlTreeView_AddChild($hTreeView, $hSubItem, $Dir[$Dir[0]], 2, 2)
ContinueLoop
Else
Return SetError(1, 0, $Path)
EndIf
EndIf
If StringRegExpReplace($Path, '\\.[^\\]*\\\Z', '\\') <> $sRoot Then
Return $Path
EndIf
While 1
$Data = $Path
$Path = _EnumPaths($Path, $hSubItem)
Switch @error
Case 1
_GUICtrlTreeView_AddChild($hTreeView, $hSubItem, StringRegExpReplace($Path, '^.*\\', ''), 2, 2)
ExitLoop
Case 2
Return SetError(2, 0, 0)
EndSwitch
If Not $Path Then
Return 0
EndIf
If StringRegExpReplace($Path, '\\.[^\\]*\\\Z', '\\') = $sRoot Then
ContinueLoop
Else
Return $Path
EndIf
WEnd
WEnd
WEnd
EndFunc ;==>_EnumPaths
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW , $lParam)
Local $hTV = DllStructGetData($tNMTREEVIEW, 'hWndFrom')
Local $ID = DllStructGetData($tNMTREEVIEW, 'Code')
Switch $hTV
Case $hTreeView
Switch $ID
Case $TVN_ITEMEXPANDEDA, $TVN_ITEMEXPANDEDW
_GUICtrlTreeView_SetImageIndex($hTreeView, DllStructGetData($tNMTREEVIEW, 'NewhItem'), BitAND(DllStructGetData($tNMTREEVIEW, 'NewState'), $TVIS_EXPANDED) = $TVIS_EXPANDED)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
очень бы хотелось как нить иго изменить так чтобы
1) в инпуте гдет показывал путь файла или каталога
2) чтобы по двойному клику и/или правой кнопки мыши оп файлу/каталогу выводилось окошко/меню можн даже
Код:
MsgBox()
для запуска мож воспользоваться этим скриптом к примеру
Код:
#Include <File.au3>
Opt('MustDeclareVars', 1)
Global Const $sRoot = RegRead('HKLM\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir')
Global Const $sFile = @ScriptDir & '\tree.txt'
Global $hFile
$hFile = FileOpen($sFile, 2)
_EnumFiles($sRoot)
FileClose($hFile)
Func _EnumFiles($sRoot)
Local $FileList
FileWriteLine($hFile, $sRoot & '\')
$FileList = _FileListToArray($sRoot, '*', 2)
If Not @error Then
For $i = 1 To $FileList[0]
_EnumFiles($sRoot & '\' & $FileList[$i])
Next
EndIf
$FileList = _FileListToArray($sRoot, '*', 1)
If Not @error Then
For $i = 1 To $FileList[0]
FileWriteLine($hFile, $sRoot & '\' & $FileList[$i])
Next
EndIf
EndFunc ;==>_EnumFiles
:'( :'( :'( плииииииииз хэлп