ricky Posted April 14, 2015 Share Posted April 14, 2015 (edited) Hello, I extract a peace of a script made by AZJIO , but my windows never close and I don't understand why. Could you help me? AB-06410.txt Thanks in advance Edited April 15, 2015 by ricky03 Link to comment Share on other sites More sharing options...
kylomas Posted April 15, 2015 Share Posted April 15, 2015 ricky03, See the comments in code... expandcollapse popup#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7 #include <GuiImageList.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiTreeView.au3> #include <Array.au3> Local $Gui1, $sList, $iBtnSave, $hTreeView, $g_hImgAssot, $tree Local $g_aExtAssot[1] = [0] Local $g_aExtBlack[6] = [5, 'exe', 'scr', 'ico', 'ani', 'cur'] Local $aListTree[3] $aListTree[0] = '|' & @TAB ; IniRead($ini, 'List', 'Depth', '|' & @Tab) $aListTree[1] = '+----' ; IniRead($ini, 'List', 'Folder', '+----') $aListTree[2] = '-----' ; IniRead($ini, 'List', 'File', '-----') ; En Global $aLngEn[10]= [9, _ 'Open the file to read', _ 'All', _ 'List', _ 'View a list', _ 'List', _ 'item', _ 'sec', _ 'Open new', _ 'Do you want to open a new file?'] Global $aLng[10] = [9] For $i = 1 To $aLng[0] $aLng[$i] = $aLngEn[$i] Next _ViewListFiles() Func _ViewListFiles() Local $aLastPath, $aList, $sep, $n_Return, $timer, _ $aLastPath[100][3] = [[0]] $Gui1 = GUICreate($aLng[4], 800, 530, -1, -1) If Not @Compiled Then GUISetIcon(@ScriptDir & '\Create_list_files.ico') $tree = GUICtrlCreateTreeView(0, 0, 800, 530, -1, $WS_EX_CLIENTEDGE) GUICtrlSetResizing(-1, 2 + 4 + 32) $hTreeView = ControlGetHandle($Gui1, "", $tree) $g_hImgAssot = _GUIImageList_Create(16, 16, 5, 1) ; Créer une liste d'icônes _GUIImageList_AddIcon($g_hImgAssot, @SystemDir & '\shell32.dll', -4) _GUIImageList_AddIcon($g_hImgAssot, @SystemDir & '\shell32.dll', 0) _GUICtrlTreeView_SetNormalImageList($hTreeView, $g_hImgAssot) $sep = Opt("GUIDataSeparatorChar", "\") $timer = TimerInit() Local $fileName = "", $s_Tree = "", $s_TreeTemp = "", $n_Files = 0 do if $s_Tree <> "" Then $s_Tree &= "|" $aList = openFile($fileName) $n_Files += $aList[0] $s_TreeTemp = $aLng[5] & " (" & $aList[0] & " files) - " & $fileName $aLastPath[0][1] = _GUICtrlTreeView_Add($hTreeView, 0, $s_TreeTemp, 0, 0) ; ajouter l'élément racine $s_Tree &= $s_TreeTemp _AddFileList($aList, $aLastPath, $hTreeView) $n_Return = MsgBox(4 + 32,$aLng[8], $aLng[9]) Until $n_Return = 7 WinSetTitle($Gui1, '', $aLng[4] & ' (' & $n_Files & ' ' & $aLng[6] & ' ' & Round(TimerDiff($timer) / 1000, 2) & ' ' & $aLng[7] & ')') Opt("GUIDataSeparatorChar", $sep) $s_TreeTemp = StringSplit($s_Tree,"|") For $i = 1 to $s_TreeTemp[0] ControlTreeView($Gui1, '', $hTreeView, 'Expand', $s_TreeTemp[$i]) Next GUISetState(@SW_SHOW, $Gui1) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ;ExitLoop guidelete($Gui1) Exit ; <----- EndSwitch ;Sleep(2000) no need to idle the loop WEnd ;GUIDelete($Gui1) this has no effect here if exiting EndFunc ;==>_ViewListFiles Func openFile(byref $fileName) Local $a_List, $s_Temp Local $ListFile = FileOpenDialog($aLng[1], @ScriptDir, $aLng[2] & ' (*.txt)', 3, $aLng[3]) If @error Then Return $s_Temp = StringSplit($ListFile,"\") $fileName = $s_Temp[$s_Temp[0]] $a_List = StringSplit(StringReplace(FileRead($ListFile), ';', ' ; '), @CRLF, 1) ; Lire la liste dans un tableau _ArraySort($a_List, 0, 1) Return $a_List EndFunc Func __TreeViewToText($hItem, $sIndent) $hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem) ; Demande le premier élément enfant If Not $hItem Then Return Local $f, $fFlag, $tmp = $sIndent & $aListTree[0] Do $fFlag = _GUICtrlTreeView_GetChildren($hTreeView, $hItem) If $fFlag Then $f = $aListTree[1] Else $f = $aListTree[2] EndIf $sList &= $sIndent & $f & _GUICtrlTreeView_GetText($hTreeView, $hItem) & @CRLF If $fFlag Then __TreeViewToText($hItem, $tmp) EndIf $hItem = _GUICtrlTreeView_GetNextSibling($hTreeView, $hItem) ; Demande l'article suivant Until Not $hItem EndFunc ;==>__TreeViewToText Func _AddFileList($aList, ByRef $aLastPath, $hTreeView) Local $hItem, $i, $ind, $j, $tmp, $ext, $z, $splitFile For $z = 1 To $aList[0] $tmp = StringSplit($aList[$z], '\') ; Division du chemin For $i = 1 To $tmp[0] If $tmp[$i] <> $aLastPath[$i][0] Then For $j = $i To $tmp[0] $aLastPath[$j][0] = $tmp[$j] ; mise en cache le nouveau chemin $aLastPath[$j + 1][2] = 0 ; remettre le compteur à 0 (dossiers) Next ExitLoop EndIf Next For $i = $i To $tmp[0] If $i = $tmp[0] Then $splitFile = StringSplit($tmp[$i], ' ; ') $ext = StringRegExpReplace($splitFile[1], '.+\.(\w+)$', '\1') ; recherche d'extension $ind = _Get_Num_ICO($ext) If @error Then $ind = 0 $aLastPath[$i][1] = _GUICtrlTreeView_AddChild($hTreeView, $aLastPath[$i - 1][1], $tmp[$i], $ind + 1, $ind + 1) ; ajoute l'article (fichier) à la fin de la liste Else $ind = 0 ; si c'est un dossier If $aLastPath[$i][2] Then $hItem = _GUICtrlTreeView_GetItemByIndex($hTreeView, $aLastPath[$i - 1][1], $aLastPath[$i][2] - 1) $aLastPath[$i][1] = _GUICtrlTreeView_InsertItem($hTreeView, $tmp[$i], $aLastPath[$i - 1][1], $hItem, $ind, $ind) Else ; sinon, si l'indice est 0, ajouter le haut de la liste $aLastPath[$i][1] = _GUICtrlTreeView_AddChildFirst($hTreeView, $aLastPath[$i - 1][1], $tmp[$i], $ind, $ind) ; ajouter un item EndIf $aLastPath[$i][2] += 1 EndIf Next Next EndFunc ;==>_AddFileList Func _Get_Num_ICO($sExt) ; Global $g_hImgAssot ; Global $g_aExtAssot Local $ind, $ico1 $ind = _ArraySearch2($g_aExtAssot, $sExt) If @error Then $ico1 = _FileDefaultIcon('.' & $sExt) If @error Then Return SetError(1, 0, -1) Else Switch UBound($ico1) Case 2 If _ArraySearch2($g_aExtBlack, $sExt) > 0 Then ; Si dans la liste noire, alors erreur Return SetError(1, 0, -1) Else _GUIImageList_AddIcon($g_hImgAssot, $ico1[1], 0) If @error Then _ArrayAdd2($g_aExtBlack, $sExt) ; Si erreur, ajouter l'extension à la liste noire Return SetError(1, 0, -1) EndIf EndIf Case 3 _GUIImageList_AddIcon($g_hImgAssot, $ico1[1], $ico1[2]) If @error Then _ArrayAdd2($g_aExtBlack, $sExt) ; Si erreur, ajouter l'extension à la liste noire Return SetError(1, 0, -1) EndIf EndSwitch _ArrayAdd2($g_aExtAssot, $sExt) ; Sinon, ajouter l'extension à la liste blanche Return SetError(0, 0, $g_aExtAssot[0]) ; MsgBox(4096, "Information", "Nombre d'images: " & _GUIImageList_GetImageCount($g_hImgAssot)) ; $sText = '' ; For $i = 0 To $g_aExtAssot[0] ; $sText &= $g_aExtAssot[$i] & @LF ; Next ; MsgBox(0, 'Message', $sText) EndIf Else Return SetError(0, 0, $ind) EndIf EndFunc ;==>_Get_Num_ICO Func _ArrayAdd2(ByRef $Array, $ext) $Array[0] += 1 ReDim $Array[$Array[0] + 1] $Array[$Array[0]] = $ext EndFunc ;==>_ArrayAdd2 Func _ArraySearch2(ByRef $Array, $ext) For $i = 1 To $Array[0] If $ext = $Array[$i] Then Return SetError(0, 0, $i) Next Return SetError(1, 0, -1) EndFunc ;==>_ArraySearch2 Func _FileDefaultIcon($sExt) If $sExt = '' Or StringInStr($sExt, ':') Then Return SetError(1) Local $aCall = DllCall("shlwapi.dll", "int", "AssocQueryStringW", _ "dword", 0x00000040, _ ;$ASSOCF_VERIFY "dword", 15, _ ;$ASSOCSTR_DEFAULTICON "wstr", $sExt, _ "ptr", 0, _ "wstr", "", _ "dword*", 65536) If @error Then Return SetError(1, 0, "") If Not $aCall[0] Then $sExt = StringReplace($aCall[5], '"', '') $sExt = StringSplit($sExt, ',') Opt('ExpandEnvStrings', 1) $sExt[1] = $sExt[1] Opt('ExpandEnvStrings', 0) Return SetError(0, 0, $sExt) ElseIf $aCall[0] = 0x80070002 Then Return SetError(1, 0, "{unknown}") ElseIf $aCall[0] = 0x80004005 Then Return SetError(1, 0, "{fail}") Else Return SetError(2, $aCall[0], "") EndIf EndFunc ;==>_FileDefaultIcon ;~ Func FileGetIcon(ByRef $szIconFile, ByRef $nIcon, $szExt) ;~ Dim $szRegDefault = "", $szDefIcon = "" ;~ $nIcon = 0 ;~ If $szRegDefault = "" Then $szRegDefault = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & $szExt, "ProgID") ;~ If $szRegDefault = "" Then $szRegDefault = RegRead("HKCR\." & $szExt, "") ;~ If $szRegDefault <> "" Then $szDefIcon = RegRead("HKCR\" & $szRegDefault & "\DefaultIcon", "") ;~ If $szDefIcon = "" Then ;~ $szIconFile = "shell32.dll" ;~ ElseIf $szDefIcon <> "%1" Then ;~ $arSplit = StringSplit($szDefIcon, ",") ;~ If IsArray($arSplit) Then ;~ $szIconFile = FileGetLongName(StringReplace($arSplit[1], '"', '')) ;~ If $arSplit[0] > 1 Then $nIcon = $arSplit[2] ;~ If StringInStr($arSplit[1], "shell32.dll") Then $nIcon += 81 ;~ Else ;~ Return 0 ;~ EndIf ;~ EndIf ;~ Return 1 ;~ EndFunc ;==>FileGetIcon kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
ricky Posted April 15, 2015 Author Share Posted April 15, 2015 Thanks for your help. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now