[Tuto] FileSaveDialog : récupérer automatiquement le filtre

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
Avatar du membre
ZOTHOP
Niveau 3
Niveau 3
Messages : 42
Enregistré le : lun. 14 févr. 2011 14:14
Status : Hors ligne

[Tuto] FileSaveDialog : récupérer automatiquement le filtre

#1

Message par ZOTHOP »

Bonjour,

beaucoup comme moi, auront remarqué qu'il est impossible d'ajouter automatiquement le filtre d'un FileSaveDialog comme extension au bout du nom d'un fichier. Quand il y a qu'un filtre on peut l'ajouter soit même avec FileOpen mais quand il en y a plusieurs, il est impossible de connaître lequel a été choisit.

J'ai découvert dans les WinAPI qu'il existe une fonction qui permet, d'afficher un FileSaveDialog et d'ajouter automatiquement le filtre sélectionné au bout du nom de fichier, comme extension.

Tout d'abord, il faut ajouter : #include <WinAPI.au3>

puis utiliser la fonction suivante :

$file=_WinAPI_GetSaveFileName("titre","filtre(s)")

Contrairement au FileSaveDialog classique, _WinAPI_GetSaveFileName retourne le chemin d'accès dans un array :

$file[1]= lettre du disque:\dossier
$file[2]= nom du fichier.filtre choisit

Pour vous en rendre compte voici une GUI avec _WinAPI_GetSaveFileName qui ouvre un FileSaveDialog avec deux filtres et qui affichent ces valeurs avec _ArrayDisplay

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 212, 146, 192, 124)
$Button1 = GUICtrlCreateButton("Save", 64, 56, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg=$Button1
        $aFile = _WinAPI_GetSaveFileName("Sélectionnez un fichier","Text(*.txt)|OGH Files(*.ogh)")
        _ArrayDisplay($aFile)
    EndSelect
   
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
_WinAPI_GetSaveFileName a beaucoup d'options, je vous invite à les découvrir dans User Defined Function Reference
et WinAPI Management.
"T'es encore devant ton ordinateur","J'ai essayé derrière mais ça marche nettement moins bien"
Répondre