Page 1 sur 1
[R] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 14:32
par Boulanza
Bonjour,
Je suis incapable de trouver la solution pour intégrer
$sFileOpenDialog = FileOpenDialog("", "", "All(*.*)" , BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT))
à la place de Dim $Path = @ScriptDir du code ci-joint. Car Dim $Path = @ScriptDir fige la recherche vers une seule direction.
Merci d’avance pour votre aide.
Cordialement.
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <File.au3>#include <GuiListBox.au3>#include <ListBoxConstants.au3>;https://www.autoitscript.fr/forum/viewtopic.php?t=7111Exemple003suite
()Func Exemple003suite
();Dim $PaintEditor = "mspaint.exe"Dim $PaintEditor = "D:\Program Files\Paint.NET\PaintDotNet.exe";Dim $Path = "D:\Program Files\TipTop software\iCar DS\skins\CFStyle"Dim $Path = @ScriptDir;Gui All skin files$AllSkinFilesGUI = GUICreate("", 490, 350, -1,-1)GUICtrlCreateLabel("Select the file that you want to edit !!!",100, 5, 300, 20)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$AllSkinList = GUICtrlCreateList("",2, 22, 488, 300, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")$PaintEditorPic = GUICtrlCreateButton("Paint", 2, 325, 25, 25, $BS_ICON)GUICtrlSetTip(-1,"Paint editor")GUICtrlSetImage(-1, @SystemDir & '\mspaint.exe', 1, 0)$PaintEditorName = GUICtrlCreateLabel("MsPaint",35,329,100,25)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$EditSelectedFile = GUICtrlCreateButton("Edit", 150, 325, 168, 25)GUICtrlCreateLabel("Filter :",370,327,45,25)GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")$EditSelectedFilter = GUICtrlCreateCombo("", 420, 325, 60, 25)Opt("GUIDataSeparatorChar","|")GUICtrlSetData(-1, "*.skin|*.txt|*.ini|*.bmp|*.gif|*.jpg|*.png|*.*", "*.jpg")GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")GUISetState()$AllSkinFilesGUIStatus = False_GUICtrlListBox_Dir($AllSkinList,$Path & "\"&GUICtrlRead($EditSelectedFilter))While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $EditSelectedFile;edition du fichier choisi $testthis = _GUICtrlListBox_GetSelItems($AllSkinList) $sItems = '' For $iI = 1 To $testthis[0] $sItems &= _GUICtrlListBox_GetText($AllSkinList,$testthis[$iI]) Next Local $szDrive, $szDir, $szFName, $szExt $Ext = _PathSplit($Path & "\"& $sItems, $szDrive, $szDir, $szFName, $szExt) If $sItems <> '' Then Switch $szExt Case ".txt" ShellExecute($sItems, "", $Path & "\" , "edit") Case ".ini",".skin" Run("notepad.exe " & $Path & "\" & $sItems) Case ".bmp", ".gif", ".jpg", ".png" $sItems = StringSplit($sItems,$szExt,1) For $i = 1 to UBound($sItems)-2 run($PaintEditor&" """&$Path & "\"&$sItems[$i]&$szExt & """","",@SW_MAXIMIZE); msgbox(0,"",$sItems[$i]) Next EndSwitch Else SplashTextOn("Info","Choose a file please !",200,40,-1, -1,32,"",10,800) sleep(2000) SplashOff() EndIf Case $EditSelectedFilter;filtrage selon l'extension du fichier _GUICtrlListBox_ResetContent($AllSkinList) _GUICtrlListBox_BeginUpdate($AllSkinList) _GUICtrlListBox_Dir($AllSkinList,$Path & "\"&GUICtrlRead($EditSelectedFilter)) _GUICtrlListBox_EndUpdate($AllSkinList) EndSwitchwendEndFunc
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 21:02
par walkson
Bonjour,
Je n'ai pas testé mais cette ligne me parait bizarre
run($PaintEditor&" """&$Path & "\"&$sItems[$i]&$szExt & """","",@SW_MAXIMIZE)
Ce ne serait pas comme ceci ?
run($PaintEditor &'" '& $Path & "\"& $sItems[$i]& $szExt & '"',"",@SW_MAXIMIZE)
un ' puis un " puis un ' => '"'
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 21:18
par Boulanza
Bonsoir monsieur walkson,
Merci pour votre aimable réponse.
Le code en question, marche sans aucun problème. Ma demande c'est de faire la recherche ("Select") de fichiers à traiter en utilisant la fonction AutoIt "FileOpenDialog" à la place de "Dim $Path = @ScriptDir" du code :
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <File.au3>#include <GuiListBox.au3>#include <ListBoxConstants.au3>;https://www.autoitscript.fr/forum/viewtopic.php?t=7111Exemple003suite
()Func Exemple003suite
();Dim $PaintEditor = "mspaint.exe"Dim $PaintEditor = "D:\Program Files\Paint.NET\PaintDotNet.exe";Dim $Path = "D:\Program Files\TipTop software\iCar DS\skins\CFStyle"Dim $Path = @ScriptDir;Gui All skin files$AllSkinFilesGUI = GUICreate("", 490, 350, -1,-1)GUICtrlCreateLabel("Select the file that you want to edit !!!",100, 5, 300, 20)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$AllSkinList = GUICtrlCreateList("",2, 22, 488, 300, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")$PaintEditorPic = GUICtrlCreateButton("Paint", 2, 325, 25, 25, $BS_ICON)GUICtrlSetTip(-1,"Paint editor")GUICtrlSetImage(-1, @SystemDir & '\mspaint.exe', 1, 0)$PaintEditorName = GUICtrlCreateLabel("MsPaint",35,329,100,25)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$EditSelectedFile = GUICtrlCreateButton("Edit", 150, 325, 168, 25)GUICtrlCreateLabel("Filter :",370,327,45,25)GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")$EditSelectedFilter = GUICtrlCreateCombo("", 420, 325, 60, 25)Opt("GUIDataSeparatorChar","|")GUICtrlSetData(-1, "*.skin|*.txt|*.ini|*.bmp|*.gif|*.jpg|*.png|*.*", "*.jpg")GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")GUISetState()$AllSkinFilesGUIStatus = False_GUICtrlListBox_Dir($AllSkinList,$Path & "\"&GUICtrlRead($EditSelectedFilter))While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $EditSelectedFile;edition du fichier choisi $testthis = _GUICtrlListBox_GetSelItems($AllSkinList) $sItems = '' For $iI = 1 To $testthis[0] $sItems &= _GUICtrlListBox_GetText($AllSkinList,$testthis[$iI]) Next Local $szDrive, $szDir, $szFName, $szExt $Ext = _PathSplit($Path & "\"& $sItems, $szDrive, $szDir, $szFName, $szExt) If $sItems <> '' Then Switch $szExt Case ".txt" ShellExecute($sItems, "", $Path & "\" , "edit") Case ".ini",".skin" Run("notepad.exe " & $Path & "\" & $sItems) Case ".bmp", ".gif", ".jpg", ".png" $sItems = StringSplit($sItems,$szExt,1) For $i = 1 to UBound($sItems)-2 run($PaintEditor&" """&$Path & "\"&$sItems[$i]&$szExt & """","",@SW_MAXIMIZE); msgbox(0,"",$sItems[$i]) Next EndSwitch Else SplashTextOn("Info","Choose a file please !",200,40,-1, -1,32,"",10,800) sleep(2000) SplashOff() EndIf Case $EditSelectedFilter;filtrage selon l'extension du fichier _GUICtrlListBox_ResetContent($AllSkinList) _GUICtrlListBox_BeginUpdate($AllSkinList) _GUICtrlListBox_Dir($AllSkinList,$Path & "\"&GUICtrlRead($EditSelectedFilter)) _GUICtrlListBox_EndUpdate($AllSkinList) EndSwitchwendEndFunc
Cordialement.
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 21:23
par walkson
Bonsoir Monsieur Boulanza
En effet ça marche, je n'ai rien dit
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 21:51
par walkson
Comme ça ?
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <File.au3>#include <GuiListBox.au3>#include <ListBoxConstants.au3>#include <Array.au3>;https://www.autoitscript.fr/forum/viewtopic.php?t=7111Exemple003suite
()Func Exemple003suite
();Dim $PaintEditor = "mspaint.exe"Dim $PaintEditor = "C:\Program Files\Paint.NET\PaintDotNet.exe";Dim $Path = "D:\Program Files\TipTop software\iCar DS\skins\CFStyle"Dim $Path = @ScriptDir;Gui All skin files$AllSkinFilesGUI = GUICreate("", 490, 350, -1,-1)GUICtrlCreateLabel("Select the file that you want to edit !!!",100, 5, 300, 20)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$AllSkinList = GUICtrlCreateList("",2, 22, 488, 300, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")$PaintEditorPic = GUICtrlCreateButton("Paint", 2, 325, 25, 25, $BS_ICON)GUICtrlSetTip(-1,"Paint editor")GUICtrlSetImage(-1, @SystemDir & '\mspaint.exe', 1, 0)$PaintEditorName = GUICtrlCreateLabel("MsPaint",35,329,100,25)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$EditSelectedFile = GUICtrlCreateButton("Edit", 150, 325, 168, 25)GUICtrlCreateLabel("Filter :",370,327,45,25)GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")$EditSelectedFilter = GUICtrlCreateCombo("", 420, 325, 60, 25)Opt("GUIDataSeparatorChar","|")GUICtrlSetData(-1, "*.skin|*.txt|*.ini|*.bmp|*.gif|*.jpg|*.png|*.*", "*.png")GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")GUISetState()$AllSkinFilesGUIStatus = FalseLocal $array[0]$sFileOpenDialog = FileOpenDialog("", "", "All(*.*)" , BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT)) ;renvoie chemin|fichier1|fichier2|etc...If StringInStr($sFileOpenDialog, "|") > 0 Then_ArrayAdd($array,$sFileOpenDialog)_ArrayDisplay($array); pour voir$path = $array[0]For $i = 1 To UBound($array) - 1 $chemin = $path & "\" & $array[$i]_GUICtrlListBox_Dir($AllSkinList,$chemin)NextElse _GUICtrlListBox_Dir($AllSkinList,$sFileOpenDialog)EndIfWhile 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $EditSelectedFile;edition du fichier choisi $testthis = _GUICtrlListBox_GetSelItems($AllSkinList) $sItems = '' For $iI = 1 To $testthis[0] $sItems &= _GUICtrlListBox_GetText($AllSkinList,$testthis[$iI]) Next Local $szDrive, $szDir, $szFName, $szExt $Ext = _PathSplit($Path & "\"& $sItems, $szDrive, $szDir, $szFName, $szExt) If $sItems <> '' Then Switch $szExt Case ".txt" ShellExecute($sItems, "", $Path & "\" , "edit") Case ".ini",".skin" Run("notepad.exe " & $Path & "\" & $sItems) Case ".bmp", ".gif", ".jpg", ".png" $sItems = StringSplit($sItems,$szExt,1) For $i = 1 to UBound($sItems)-2 run($PaintEditor&" """&$Path & "\"&$sItems[$i]&$szExt & """","",@SW_MAXIMIZE); msgbox(0,"",$sItems[$i]) Next EndSwitch Else SplashTextOn("Info","Choose a file please !",200,40,-1, -1,32,"",10,800) sleep(2000) SplashOff() EndIf Case $EditSelectedFilter;filtrage selon l'extension du fichier _GUICtrlListBox_ResetContent($AllSkinList) _GUICtrlListBox_BeginUpdate($AllSkinList) _GUICtrlListBox_Dir($AllSkinList,$Path & "\"&GUICtrlRead($EditSelectedFilter)) _GUICtrlListBox_EndUpdate($AllSkinList) EndSwitchwendEndFunc
Mais dans ce cas, le combo est inutile....
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 22:49
par Boulanza
Bonsoir monsieur walkson,
Merci infiniment pour votre aide, ça marche parfaitement.
Cordialement.
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : mer. 10 avr. 2019 23:53
par walkson
Non, le code fonctionne mal quand on choisit un seul fichier. L'erreur vient de Dim $Path = @ScriptDir qui renvoie une mauvaise adresse
Voilà le code corrigé pour cette erreur. Le reste je vous le laisse
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <File.au3>#include <GuiListBox.au3>#include <ListBoxConstants.au3>#include <Array.au3>#include <WinAPIShPath.au3>;https://www.autoitscript.fr/forum/viewtopic.php?t=7111Exemple003suite
()Func Exemple003suite
();Dim $PaintEditor = "mspaint.exe"Dim $PaintEditor = "C:\Program Files\Paint.NET\PaintDotNet.exe";Dim $Path = "D:\Program Files\TipTop software\iCar DS\skins\CFStyle";Gui All skin files$AllSkinFilesGUI = GUICreate("", 490, 350, -1,-1)GUICtrlCreateLabel("Select the file that you want to edit !!!",100, 5, 300, 20)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$AllSkinList = GUICtrlCreateList("",2, 22, 488, 300, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")$PaintEditorPic = GUICtrlCreateButton("Paint", 2, 325, 25, 25, $BS_ICON)GUICtrlSetTip(-1,"Paint editor")GUICtrlSetImage(-1, @SystemDir & '\mspaint.exe', 1, 0)$PaintEditorName = GUICtrlCreateLabel("MsPaint",35,329,100,25)GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")$EditSelectedFile = GUICtrlCreateButton("Edit", 150, 325, 168, 25)GUICtrlCreateLabel("Filter :",370,327,45,25)GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")$EditSelectedFilter = GUICtrlCreateCombo("", 420, 325, 60, 25)Opt("GUIDataSeparatorChar","|")GUICtrlSetData(-1, "*.skin|*.txt|*.ini|*.bmp|*.gif|*.jpg|*.png|*.*", "*.png")GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")GUISetState()$AllSkinFilesGUIStatus = FalseLocal $array[0], $pathLocal $sFileOpenDialog = FileOpenDialog("", @DesktopDir, "All(*.*)" , BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT)) ;renvoie chemin|fichier1|fichier2|etc...If StringInStr($sFileOpenDialog, "|") > 0 Then _ArrayAdd($array,$sFileOpenDialog) ;_ArrayDisplay($array); pour voir $path = $array[0] _GUICtrlListBox_BeginUpdate($AllSkinList) _GUICtrlListBox_InitStorage($AllSkinList, 100, 4096) For $i = 1 To UBound($array) - 1 $chemin = $path & "\" & $array[$i] _GUICtrlListBox_Dir($AllSkinList,$chemin) NextElse _GUICtrlListBox_Dir($AllSkinList,$sFileOpenDialog) $path = _WinAPI_PathRemoveFileSpec($sFileOpenDialog)EndIf_GUICtrlListBox_EndUpdate($AllSkinList)While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $EditSelectedFile;edition du fichier choisi $testthis = _GUICtrlListBox_GetSelItems($AllSkinList) $sItems = '' For $iI = 1 To $testthis[0] $sItems &= _GUICtrlListBox_GetText($AllSkinList,$testthis[$iI]) Next Local $szDrive, $szDir, $szFName, $szExt $Ext = _PathSplit($Path & "\"& $sItems, $szDrive, $szDir, $szFName, $szExt) If $sItems <> '' Then Switch $szExt Case ".txt" ShellExecute($sItems, "", $Path & "\" , "edit") Case ".ini",".skin" Run("notepad.exe " & $Path & "\" & $sItems) Case ".bmp", ".gif", ".jpg", ".png" $sItems = StringSplit($sItems,$szExt,1) For $i = 1 to UBound($sItems)-2 run($PaintEditor&" """&$Path & "\"&$sItems[$i]&$szExt & """","",@SW_MAXIMIZE) Next EndSwitch Else SplashTextOn("Info","Choose a file please !",200,40,-1, -1,32,"",10,800) sleep(2000) SplashOff() EndIf Case $EditSelectedFilter;filtrage selon l'extension du fichier _GUICtrlListBox_ResetContent($AllSkinList) _GUICtrlListBox_BeginUpdate($AllSkinList) _GUICtrlListBox_Dir($AllSkinList,$Path & "\"&GUICtrlRead($EditSelectedFilter)) _GUICtrlListBox_EndUpdate($AllSkinList) EndSwitchwendEndFunc
Re: [..] Comment ajouter FileOpenDialog au code ci-dessous
Posté : jeu. 11 avr. 2019 10:54
par Boulanza
Bonjour monsieur Walkson,
C'est bien vu, merci pour la correction, ce script servira pour tous les utilisateurs de AutoIt.
Cordialement.