[R] Lister des dossiers dans Combo

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

[R] Lister des dossiers dans Combo

#1

Message par Julien »

Bonjour,

Je voudrais lister les dossiers uniquement contenu d'après un chemin UNC dans une liste déroulante.

dir = "C:\dossier"
ou
$dir = "\\machine\dossier"

Après quelque recherche j'en suis arrivé la :

Code : Tout sélectionner


$Search = FileFindFirstFile($dir & "\*.*")
$dirlist = ""

While (1)
    $tmpSoft = FileFindNextFile($Search)
    If (@error) Then
       ExitLoop
    EndIf

    If FileGetAttrib($tmpSoft) = "D" Then
    $dirlist = $dirlist & "|" & $tmpSoft
    EndIf
WEnd

If ( $dirlist = "" ) Then
     MsgBox(0, "Erreur", "Aucun fichier a copier" )
     Exit
EndIf

$dirlist = $dirlist & "|"
FileCLose($Search)

$Input1 = GUICtrlCreateCombo ("", 120, 48, 193, 23,$CBS_DROPDOWNLIST)
GUICtrlSetData(-1,$dirlist,"")
GUICtrlSetCursor ($Input1, 5)
 
Au lancement du programme $dirlist est toujours vide.
Pouvez-vous m'aider ?

D'avance merci.
Modifié en dernier par Tlem le dim. 03 août 2008 23:57, modifié 1 fois.
Raison : Ajout de la balise [] dans le titre
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: Lister des dossiers dans Combo

#2

Message par Julien »

Après quelques heures de recherche je suis parvenu au resultat attendu !

Voici comment :

Code : Tout sélectionner

 
Dim $Repmachine = "C:\"
Dim $FileCount1 = 0
Dim $Dirlist = ""
 
ScanMachine($Repmachine)
 
$Dirlist = $Dirlist & "|"

If $FileCount1 == 0 Then
    MsgBox(16," -- Erreur -- ","Impossible d'etablir une liste des ordinateurs.")
Else
    If ($Dirlist = "") Then
        MsgBox(0, "Erreur", "Aucun fichier a copier" )
    EndIf
EndIf

Func ScanMachine($SourceFolder)
    Local $Search
    Local $File
    Local $FileAttributes
    Local $FullFilePath

    $Search = FileFindFirstFile($SourceFolder & "\*.*")
 
    While 1
        If $Search = -1 Then
            ExitLoop
        EndIf

        $File = FileFindNextFile($Search)
        If @error Then ExitLoop

        $FullFilePath = $SourceFolder & "\" & $File
        $FileAttributes = FileGetAttrib($FullFilePath)
        $NameSRV = StringInStr($File, "D001") ; Retourne 0 si D001 n'est pas présent
        $Len = StringLen($File) ; Compte le nombre de caractère
        
        If StringInStr($FileAttributes,"D") Then
            If $Len = 15 Then
                If $NameSRV = 0 Then
                    $FileCount1 += 1
                    $Dirlist = $Dirlist & "|" & $File
                EndIf
            EndIf
        EndIf
    WEnd
    FileClose($Search)
EndFunc
Avec des contrôles supplémentaires.
Ensuite dans mon GUI pour avoir la liste déroulante j'ai ceci :

Code : Tout sélectionner

$Input1 = GUICtrlCreateCombo ("", 120, 48, 193, 23,$CBS_DROPDOWNLIST)
 GUICtrlSetData(-1,$Dirlist,"")
 
Voila, si ça peux aider quelqu'un.
Répondre