[Tuto] FileSaveDialog : récupérer automatiquement le filtre
Posté : mar. 01 nov. 2011 18:17
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
_WinAPI_GetSaveFileName a beaucoup d'options, je vous invite à les découvrir dans User Defined Function Reference
et WinAPI Management.
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
et WinAPI Management.