Aide liste fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Aide liste fichier

#1

Message par tilo456 »

Bonjour,

Je suis débutant sur AUTOIT mais j'ai réussi a me faire aider pour faire un mini-soft utile pour mon travail.

Actuellement je suis en train de le Mettre a jour et j'aimerai ajouter une nouvelle fonction: lire des pdf tuto (présents dans un dossier)
Or je n'arrive pas a trouver / faire ce que je voudrais.

je voulais faire la chose suivante:

un menu qui liste les fichiers pdf du dossier (par leurs nom de fichier) dans une liste ou liste déroulante,
et que par l'action d'un (double) clic ou par selection (dans la liste) puis validation par un bouton "valider",
le PDF s'ouvre via le logiciel portable.

Je sollicite donc votre aide: serait il possible que quelqu'un me fasse ce script ?

Les pdf sont dans un dossier "files", ce dossier sera au même endroit que le script.

Ils s'executent avec l'exe portable "PDFXCview.exe" dans le dossier "pdf" a cet endroit "AUTOIT\utilitaire\exe\pdf"
(chemin complet "AUTOIT\utilitaire\exe\pdf\PDFXCview.exe")

D'avance merci,

Cordialement

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier

#2

Message par walkson »

Bonjour,
Ce sujet a été déjà abordé très souvent. Vous auriez pu faire une recherche !

Pour lister les fichiers _FileListToArray() ce qui vous donne un array d'une colonne
Vous créez une listview d'une colonne (avec Koda) que vous remplissez avec _GUICtrlListView_AddArray ()
Pour lire la ligne sélectionnée de la listview _GUICtrlListView_GetItemTextString($ListView1)
Pour lancer la lecture du PDF ShellExecute() Soit PDFXCview.exe est le lecteur par défaut et le chemin du PDF est suffisant, soit il ne l'est pas dans ce cas ShellExecute("PDFXCview.exe", "chemin du PDF")

Utilisez l'aide (qui existe en français sur ce forum) et les exemples pour vous documenter. Proposez nous un code (simple) où nous pourrions vous aider si vous avez des problèmes.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#3

Message par tilo456 »

Mon problème est que même avec l'aide je n'arrive pas a grand chose (je n'arrive pas comprendre le fonctionnement)

en pompant a droite a gauche j'ai réussi a faire cela:

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <File.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Tutoriels", 314, 410, 276, 135)
GUISetBkColor(0xB4B4B4)
$List1 = GUICtrlCreateList("", 56, 48, 193, 292)
$Label1 = GUICtrlCreateLabel("Liste des Tutoriels", 32, 8, 251, 37, $SS_CENTER)
GUICtrlSetFont(-1, 20, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x000000)
$Back = GUICtrlCreateButton("Retour", 56, 360, 65, 33)
$Open = GUICtrlCreateButton("OUVRIR", 184, 360, 65, 33)
GUISetState(@SW_SHOW)
$sFolder = @ScriptDir & "\files" ;emplacement des pdfs
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Open
		Local $FileList = _FileListToArray($sFolder, "*.pdf*")

		If @error = 1 Then
            MsgBox(0, "", "No Folders Found.")
            Exit
        EndIf
        If @error = 4 Then
            MsgBox(0, "", "No Files Found.")
            Exit
        EndIf

        For $i = 1 To $FileList[0]
        GUICtrlSetData($List1, $FileList[$i])

		Next

           Case $Back
               ExitLoop

	EndSwitch
WEnd

Mais le problème c'est que pour voir la liste je dois cliquer sur "OUVRIR" alors que j'aimerais qu'elle s'affiche directement et que le bouton ouvrir serve a ouvrir le pdf sélectionné...

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier

#4

Message par walkson »

Bonjour,
Vous étiez pas loin de réussir !

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <File.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Tutoriels", 314, 410, 276, 135)
GUISetBkColor(0xB4B4B4)
$List1 = GUICtrlCreateList("", 56, 48, 193, 292)
$Label1 = GUICtrlCreateLabel("Liste des Tutoriels", 32, 8, 251, 37, $SS_CENTER)
GUICtrlSetFont(-1, 20, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x000000)
$Back = GUICtrlCreateButton("Retour", 56, 360, 65, 33)
$Open = GUICtrlCreateButton("OUVRIR", 184, 360, 65, 33)
GUISetState(@SW_SHOW)
$sFolder = @ScriptDir & "\files"  ;emplacement des pdfs
#EndRegion ### END Koda GUI section ###
		Local $FileList = _FileListToArray($sFolder, "*.pdf",1,True)
		_ArrayDisplay($FileList) ;pour voir le résultat à supprimer si réussite
		If @error = 1 Then
            MsgBox(0, "", "No Folders Found.")
            Exit
        EndIf
        If @error = 4 Then
            MsgBox(0, "", "No Files Found.")
            Exit
        EndIf

        For $i = 1 To $FileList[0]
        GUICtrlSetData($List1, $FileList[$i])
		Next
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit		
		Case $Open
			MsgBox(0,"",GUICtrlRead($List1))


		Case $Back

			ExitLoop

	EndSwitch
WEnd

Pour lire le PDF, ShellExecute("chemin pdf") ou ShellExecute("lecteur pdf", "chemin pdf")
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#5

Message par tilo456 »

merci déjà de votre aide ;)

mais j'ai une fenêtre ARRAY qui s'ouvre en plus de ma fenêtre maintenant, comment l'enlever ? (problème résolu)

ensuite le chemin en soit il est déjà présent dans la liste, je voudrais pouvoir faire en sorte que quand le bouton "ouvrir" est cliqué, cela récupère tout le chemin du pdf sélectionné dans la liste (la liste affiche le contenu du dossier files\ et le nom du pdf afficher est simplement le morceau de chemin manquant) et l'ouvre...

est-ce possible ?

[EDIT]

j'en suis arrivé a là: cela ouvre le lecteur pdf mais vide....

Code : Tout sélectionner

#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <File.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Tutoriels", 314, 410, 276, 135)
GUISetBkColor(0xB4B4B4)
$List1 = GUICtrlCreateList("", 56, 48, 193, 292)
$Label1 = GUICtrlCreateLabel("Liste des Tutoriels", 32, 8, 251, 37, $SS_CENTER)
GUICtrlSetFont(-1, 20, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x000000)
$Back = GUICtrlCreateButton("Retour", 56, 360, 65, 33)
$Open = GUICtrlCreateButton("OUVRIR", 184, 360, 65, 33)
GUISetState(@SW_SHOW)
$sFolder = @ScriptDir & "\files"  ;emplacement des pdfs
#EndRegion ### END Koda GUI section ###
		Local $FileList = _FileListToArray($sFolder, "*.pdf",1,False)
		;_ArrayDisplay($FileList) ;pour voir le résultat à supprimer si réussite
		If @error = 1 Then
            MsgBox(0, "", "No Folders Found.")
            Exit
        EndIf
        If @error = 4 Then
            MsgBox(0, "", "No Files Found.")
            Exit
        EndIf

        For $i = 1 To $FileList[0]
        GUICtrlSetData($List1, $FileList[$i])
		Next


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Open
			ShellExecute(@ScriptDir & "\pdf\PDFXCview.exe","",GUICtrlRead($List1))


		Case $Back

			ExitLoop

	EndSwitch
WEnd

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier

#6

Message par walkson »

Prenez le temps de lire les fonctions avec leurs options !
ShellExecute("lecteur pdf", "chemin pdf") j'ouvre le pdf
ShellExecute("lecteur pdf", "chemin pdf", "", "print") j'imprime le pdf, etc....
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#7

Message par tilo456 »

les options de la fonction c'est ok
mais ce que je n'arrive pas a faire (ce que je ne comprend pas) c'est récupérer ce qui est écrit dans la zone bleu (ou récupérer le chemin complet de ce qui est sélectionné en zone bleu sachant que ce chemin est d'abord utilisé dans la fonction d'affichage de la liste)
tuto.jpg

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier

#8

Message par walkson »

vous remarquerez que dans la list vous avez que les noms des PDF mais pas le chemin parce que vous avez mis
Local $FileList = _FileListToArray($sFolder, "*.pdf",1,False)
alors que dans mon code, vous avez Local $FileList = _FileListToArray($sFolder, "*.pdf",1,True) qui renvoie le chemin complet du fichier
Donc la sélection dans la liste vous donne le chemin complet du pdf que le lecteur ouvre
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#9

Message par tilo456 »

oui ça j'avais vu mais justement je ne veux pas que tout le chemin soit afficher sinon cela va vite devenir illisible.... pour les test j'ai mis que 6 pdf mais au total j'en ai une centaine !

et mème en changeant en TRUE et ça ShellExecute(@ScriptDir & "\pdf\PDFXCview.exe","",GUICtrlRead($List1))

cela ne donne rien

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier

#10

Message par walkson »

Rhôôôôôô !!!
ShellExecute("lecteur pdf", "chemin pdf") j'ouvre le pdf
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#11

Message par tilo456 »

Me redonner le descriptif de la commande ShellExecute ne changera rien a mon problème,

le problème viens justement du morceau "chemin du fichier", je n'arrive pas a le faire remonter depuis la liste !
j'en suis arriver a tester des truc improbables :

Code : Tout sélectionner

ShellExecute($sPDFView,1, $sFolder & GUICtrlRead($List1))
oui j'ai simplifier les chemin vers les éléments fixe:
$sFolder = @ScriptDir & "\files" ;emplacement des pdfs
$sPDFView = @ScriptDir & "\pdf\PDFXCview.exe" ;emplacement lecteur pdf


cela semble évident pour vous mais pas pour moi, comme je l'ai dit au 1er poste je suis pas du tout expert en AUTOIT (et en plus je ne le fait pas par plaisir mais par besoin pour mon travail)

alors si vous connaissez la solution finale, soyez sympa de me la donner... il m'est plus simple de comprendre les choses en les voyant fonctionner...

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier

#12

Message par walkson »

ce peut être une solution mais dans ce cas
ShellExecute($sPDFView, $sFolder &"\"& GUICtrlRead($List1))
Dans ShellExecute(), le paramètre est le chemin du PDF (deuxième position)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#13

Message par tilo456 »

AWESOME !!!!

Mais pour bien comprendre, en fait dans cette configuration là, le "chemin" de la fonction devait simplement être le \ pour pouvoir faire le lien entre $sFolder et

Code : Tout sélectionner

GUICtrlRead($List1)
et du coup créer un chemin complet ?

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 811
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Aide liste fichier  

#14

Message par walkson »

Je vous mets le code que j'avais préparé
Le principe est de récupérer les chemins des PDF du dossier dans un array, récupérer les noms des PDF pour la list et lors d'une sélection, faire une recherche dans l'array avec le nom du PDF pour récupérer le chemin. C'est plus compliqué mais c'est plus sûr comme méthode

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <File.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Tutoriels", 314, 410, 276, 135)
GUISetBkColor(0xB4B4B4)
$List1 = GUICtrlCreateList("", 56, 48, 193, 292)
$Label1 = GUICtrlCreateLabel("Liste des Tutoriels", 32, 8, 251, 37, $SS_CENTER)
GUICtrlSetFont(-1, 20, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x000000)
$Back = GUICtrlCreateButton("Retour", 56, 360, 65, 33)
$Open = GUICtrlCreateButton("OUVRIR", 184, 360, 65, 33)
GUISetState(@SW_SHOW)
$sFolder = @DesktopDir ;& "\files"  ;emplacement des pdfs =======> voir chemin
#EndRegion ### END Koda GUI section ###
		Local $FileList = _FileListToArray($sFolder, "*.pdf",1,True) ; on récupère le chemin complet du pdf
		;_ArrayDisplay($FileList) ;pour voir le résultat à supprimer si réussite
		If @error = 1 Then
            MsgBox(0, "", "No Folders Found.")
            Exit
        EndIf
        If @error = 4 Then
            MsgBox(0, "", "No Files Found.")
            Exit
        EndIf

        For $i = 1 To $FileList[0]
			$nom = StringSplit($FileList[$i],"\") ; on coupe le chemin à chaque \ et on obtient un array
			GUICtrlSetData($List1, $nom[$nom[0]]) ; on récupère le nom du pdf sans le chemin
		Next


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Open
			$search = _ArraySearch($FileList,GUICtrlRead($List1),0,0,0,1) ; on cherche le nom du pdf dans l'array contenant les chemins Retourne N° de la ligne trouvée
			ConsoleWrite($search & @CR);pour voir le résultat à supprimer si réussite
			$monpdf = $FileList[$search];on lit la ligne dans l'array pour avoir le chemin
			ConsoleWrite($monpdf & @CR);pour voir le résultat à supprimer si réussite
			ShellExecute($monpdf)
			;dans votre cas, ce sera ShellExecute(@ScriptDir & "\pdf\PDFXCview.exe",$monpdf)


		Case $Back

			ExitLoop

	EndSwitch
WEnd

Pour ma part, j'utilise une ListView avec 2 colonnes. La première contient les noms des fichiers et la deuxième, qui est masqué, contient les chemins. Cela évite de faire des recherches. Comme vous êtes parti sur GUICtrlCreateList() je suis resté dessus....
Si vous testez le code, mettre à jour le chemin du dossier PDF et du lecteur PDF
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

tilo456
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Aide liste fichier

#15

Message par tilo456 »

ah en fait, si je me trompe pas, plutôt que de prendre tout le chemin d'un coup comme ce que je fait, cela prend la ligne sélectionnée et les colonnes et assemble le tout pour faire un chemin... effectivement plus complexe mais évite les erreurs...

Répondre