Liste dossiers et fichiers txt dans un menu bouton clic droit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
LaTMoT
Niveau 1
Niveau 1
Messages : 12
Enregistré le : ven. 15 sept. 2017 14:33
Localisation : Eure et Loir
Status : Hors ligne

Liste dossiers et fichiers txt dans un menu bouton clic droit

#1

Message par LaTMoT »

Bonjour à toutes et à tous :D

J'ai récupéré ce script sur la toile qui me liste bien les dossiers, sous-dossiers et fichiers txt dans un menu dans un bouton en faisant un clic droit.
Cependant, je n'arrive pas à comprendre comment je dois procéder afin de pouvoir ouvrir le fichier txt sélectionné dans ce même menu :(

Auriez vous, s'il vous plait, une solution à me proposer ?

En vous remerciant par avance :wink:

Code : Tout sélectionner

#include <Array.au3>
#include <Math.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

#include <GUIConstantsEx.au3>

Func parcourirDossier($sdd, $folder, $filter="*", $depth=-1)
    If Int($depth) > 0 Then
        Local $subFolders = _FileListToArray($folder,"*",2)
        If Not @error Then
            For $i = 1 To $subFolders[0]
                parcourirDossier(GUICtrlCreateMenu($subFolders[$i],$sdd),$folder&"\"&$subFolders[$i],$filter,_Max($depth-1,-1))
            Next
        EndIf
        GUICtrlCreateMenuItem("",$sdd)
        Local $subFiles = _FileListToArray($folder,$filter,1)
        If Not @error Then
            For $i = 1 To $subFiles[0]
                GUICtrlCreateMenuItem($subFiles[$i],$sdd)
            Next
        EndIf
    EndIf
EndFunc

$GUI = GUICreate("Test",150,100)
$boutonArbo = GUICtrlCreateButton("clique droit",5,5,140,40)
Global $contexte = GUICtrlCreateContextMenu($boutonArbo)
parcourirDossier($contexte,@ScriptDir,"*.txt",3)
GUISetState(@SW_SHOW,$GUI)

While GUIGetMsg() <> $GUI_EVENT_CLOSE
    Sleep(100)
WEnd
Laurent, débutant avec AutoIt :-)

Projet AutoIt en cours : Gestion de mes Tablatures Guitare avec Vidéos des cours.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Liste dossiers et fichiers txt dans un menu bouton clic droit

#2

Message par mikell »

J'ai une question qui te paraitra peut-être inappropriée, mais qui en fait ne l'est pas tant que ça :
Est-ce que tu comprends vraiment comment fonctionne le script que tu as posté ? Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
LaTMoT
Niveau 1
Niveau 1
Messages : 12
Enregistré le : ven. 15 sept. 2017 14:33
Localisation : Eure et Loir
Status : Hors ligne

Re: Liste dossiers et fichiers txt dans un menu bouton clic droit

#3

Message par LaTMoT »

Je crois que non. Je n'ai pas trop d'affinité avec AutoIT, je préfère EXCEL/VBA :)
J'ai pourtant chercher et réussis à faire des programmes mais celui là j'avoue, je ne comprend pas trop.
Un début de piste pour m'aider ? :D
Merci
Laurent, débutant avec AutoIt :-)

Projet AutoIt en cours : Gestion de mes Tablatures Guitare avec Vidéos des cours.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Liste dossiers et fichiers txt dans un menu bouton clic droit  

#4

Message par mikell »

Bah je disais ça juste parce que comprendre comment les choses marchent peut se révéler utile parfois :mrgreen:

Pour afficher des .txt avec ton script, tu as besoin de 2 choses que le script en l'état ne te fournit pas :
- les IDs des items de menu concernés (pour que le script sache sur quoi tu cliques)
- le chemin des fichiers concernés (pour pouvoir les afficher, avec l'éditeur txt par défaut ou autre)

Dans le code d'exemple cy-dessous, j'ai rajouté à ton script une array 2D qui récupère et stocke ces infos (colonne1 = ids, colonne2 = chemins). Les clics sur menuItems sont gérés dans la boucle While
Si tu as besoin d'explications n'hésite pas à demander :wink:

#include <Array.au3>
#include <Math.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>

Global $s[1000][2], $n

$GUI = GUICreate("Test",150,100)
$boutonArbo = GUICtrlCreateButton("clique droit",5,5,140,40)
Global $contexte = GUICtrlCreateContextMenu($boutonArbo)
parcourirDossier($contexte,@ScriptDir,"*.txt",3)
GUISetState(@SW_SHOW,$GUI)

Redim $s[$n][2]
; _ArrayDisplay($s)  ; juste pour voir...

While 1
       $msg = GUIGetMsg()
       If $msg = $GUI_EVENT_CLOSE Then Exit
       For $i = 0 to UBound($s)-1
          If $msg = $s[$i][0] Then ShellExecute($s[$i][1])
       Next
 WEnd


Func parcourirDossier($sdd, $folder, $filter="*", $depth=-1)
   If Int($depth) > 0 Then
        Local $subFolders = _FileListToArray($folder,"*",2)
        If Not @error Then
            For $i = 1 To $subFolders[0]
                parcourirDossier(GUICtrlCreateMenu($subFolders[$i],$sdd),$folder&"\"&$subFolders[$i],$filter,_Max($depth-1,-1))
            Next
        EndIf
        GUICtrlCreateMenuItem("",$sdd)
        Local $subFiles = _FileListToArray($folder,$filter,1)
        If Not @error Then
            For $i = 1 To $subFiles[0]
                $s[$n][0] = GUICtrlCreateMenuItem($subFiles[$i],$sdd)
                $s[$n][1] = $folder&"\"&$subFiles[$i]
                $n += 1
           Next
        EndIf
    EndIf
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
LaTMoT
Niveau 1
Niveau 1
Messages : 12
Enregistré le : ven. 15 sept. 2017 14:33
Localisation : Eure et Loir
Status : Hors ligne

Re: Liste dossiers et fichiers txt dans un menu bouton clic droit

#5

Message par LaTMoT »

Un grand merci à toi pour les explications et la solution, cela fonctionne parfaitement.

et je suis d'accord, le fait de comprendre aide ;-)

Merci.
Laurent, débutant avec AutoIt :-)

Projet AutoIt en cours : Gestion de mes Tablatures Guitare avec Vidéos des cours.
Répondre