Bonjour.
Souci résolu.
Déjà, un grand merci aux intervenants.
J'ai utilisé le script de Walkson pour arriver à mes fins.
J'avais un doute sur l'adaptation, puisque j'utilise souvent la même procédure pour créer une interface.
Et ce doute était réel : les boutons inopoérants.
Dans le passé, j'étais aussi confronté à ce souci.
Et en appliquant une autre méthode pour créer une interface, le souci fut réglé.
Et c'est le cas ici aussi.
Du coup, pour l'interface, j'ai utilisé ceci comme aide :
https://beamtic.com/creating-guis-autoit
Et voici le script final :
► Afficher le texte
#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <File.au3>#include <GuiStatusBar.au3>#include <Array.au3>Opt('MustDeclareVars', 1)Opt("TrayMenuMode", 3)Global $wmp = ObjCreate("wmplayer.OCX")Global $MaPlaylist = @DesktopDir & "\MaPlaylist.m3u"Global $MaPlaylist_AL = @DesktopDir & "\MaPlaylist[aleatoire].m3u"MainGUI
()Func MainGUI
() Local $msg, $tmsg Local $iDossier, $parcourir, $creer_playlist Local $parcourir_pl, $iPlaylist, $jouer_pl, $suivant, $precedent Local $parcourir_tray, $jouer_pl_tray, $creer_playlist_tray, $parcourir_pl_tray, $jouer_pl_tray, $suivant_tray, $precedent_tray, $quitter_tray local $message_pl = "Permer de créer 2 playlist :" & @crlf & "- 1 playlist avec un tri par défaut." & @CRLF &"- 1 playlist avec un tri aléatoire." Local $gui = GUICreate("My GUI Window Title", 550, 600, 10, 10) GUISetFont(9, 500, 0, "comic sans ms");~ Opt("GUICoordMode", 2);~ $Button1 = GUICtrlCreateButton("Button 1", 10, 30, 100);~ $Button2 = GUICtrlCreateButton("Button 2", 0, -1) GUICtrlCreateLabel("Dossier Musique", 5, 2.5, 110, 20) $iDossier = GUICtrlCreateInput("", 120, 0, 400, 20) GUICtrlSetState($iDossier, 128) $parcourir = GUICtrlCreateButton("...", 525, 0, 20, 20) $creer_playlist = GUICtrlCreateButton("Créer les playlists", 5, 30, 150, 20) GUICtrlSetTip($creer_playlist,$message_pl,"Création de deux playlists") GUICtrlCreateLabel("", 0, 60, 550, 1, $SS_SUNKEN) $parcourir_pl = GUICtrlCreateButton("Importer une playlist", 5, 70, 150, 25) $iPlaylist = GUICtrlCreateInput("", 170, 70, 350, 25) GUICtrlSetState($iPlaylist, 128) $jouer_pl = GUICtrlCreateButton("Jouer la playlist", 25, 110, 120, 25) $suivant = GUICtrlCreateButton("Musique suivante", 150, 110, 120, 25) $precedent = GUICtrlCreateButton("Musique précédente", 275, 110, 120, 25) $parcourir_tray = TrayCreateItem("Choix du dossier Musique") $creer_playlist_tray = TrayCreateItem("Créer la playlist") TrayCreateItem("") $parcourir_pl_tray = TrayCreateItem("Importer la playlist") TrayCreateItem("") $jouer_pl_tray = TrayCreateItem("Jouer la playlist") $suivant_tray = TrayCreateItem("Suivant") $precedent_tray = TrayCreateItem("Précédent") TrayCreateItem("") $quitter_tray = TrayCreateItem("Quitter") Global $barre_etat = _GUICtrlStatusBar_Create($gui) _GUICtrlStatusBar_SetText($barre_etat, "Lecture en cours : --") GUISetState() ; Run the GUI until the window is closed While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $parcourir Global $folder = FileSelectFolder("Choisissez le dossier où se trouver vos musiques / vidéos", @DesktopDir, 2) If Not @error Then GUICtrlSetData($iDossier, $folder) TrayTip("Succès", "Le dossier Musique a bien été sélectionné.", 5) EndIf Case $msg = $creer_playlist Global $dossier = GUICtrlRead($iDossier) _CreationPL
($dossier) Case $msg = $parcourir_pl Global $fod = FileOpenDialog("Choisissez La Playlist que vous souhaitez importer", @DesktopDir, "Playlist (*.m3u;*m3u8)", 1) If Not @error Then GUICtrlSetData($iPlaylist, $fod) Case $msg = $jouer_pl Global $Playlist = GUICtrlRead($iPlaylist) If FileExists($Playlist) Then _play_media
($Playlist) Case $msg = $suivant _suivant
() Case $msg = $precedent _precedent
() EndSelect $tmsg = TrayGetMsg() Select Case $tmsg = $parcourir_tray Global $folder = FileSelectFolder("Choisissez le dossier où se trouver vos musiques / vidéos", @DesktopDir, 2) If Not @error Then GUICtrlSetData($iDossier, $folder) TrayTip("Succès", "Le dossier Musique a bien été sélectionné.", 5) EndIf Case $tmsg = $creer_playlist_tray Global $dossier = GUICtrlRead($iDossier) _CreationPL
($dossier) Case $tmsg = $jouer_pl_tray Global $Playlist = GUICtrlRead($iPlaylist) If FileExists($Playlist) Then _play_media
($Playlist) Case $tmsg = $parcourir_pl_tray Global $fod = FileOpenDialog("Choisissez La Playlist que vous souhaitez importer", @DesktopDir, "Playlist (*.m3u;*m3u8)", 1) If Not @error Then GUICtrlSetData($iPlaylist, $fod) Case $tmsg = $jouer_pl_tray Global $Playlist = GUICtrlRead($iPlaylist) If FileExists($Playlist) Then _play_media
($Playlist) Case $tmsg = $suivant_tray _suivant
() Case $tmsg = $precedent_tray _precedent
() EndSelect WEndEndFunc ;==>MainGUIFunc _CreationPL
($dossier) Local $medias, $contenu_pl, $MPlist, $MPlist2, $n1, $n2, $temp If FileExists($dossier) Then Local $extensions = "*.ac3;*.flac;*.mp3;*.wav" Local $FLTAR = _FileListToArrayRec($dossier, $extensions, 1, 1, 1, 2) For $a = 1 To $FLTAR[0] Local $media = $FLTAR[$a] $medias &= $media & @CRLF Next EndIf If StringStripWS($medias, 8) <> "" Then FileDelete($MaPlaylist) FileDelete($MaPlaylist_AL) $MPlist = FileOpen($MaPlaylist, 2) FileWrite($MPlist, $medias) FileClose($MPlist) $MPlist2 = FileOpen($MaPlaylist_AL, 2) FileWrite($MPlist2, $medias) FileClose($MPlist2) Dim $Array[9] _FileReadToArray($MaPlaylist_AL, $Array) For $i = 1 To 10 * UBound($Array) $n1 = Random(1, UBound($Array) - 1, 1) ;was Random(0...but I change it to 1 so element [0] will $n2 = Random(1, UBound($Array) - 1, 1) ;not be read into the array (I think that's how it works $temp = $Array[$n1] ;because now text results show no [0] element showing up $Array[$n1] = $Array[$n2] $Array[$n2] = $temp Next;~ _ArrayDisplay($Array) _FileWriteFromArray($MaPlaylist_AL, $Array, 1) TrayTip("Succès", "La playlist a bien été créé !", 5) EndIfEndFunc ;==>_CreationPLFunc _play_media
($PL) $wmp.settings.autoStart = True $wmp.settings.volume = 50 $wmp.URL = $PL ConsoleWrite("Nom de la playliste " & $wmp.currentPlaylist.Name & @CR) ConsoleWrite("Nombre de morceaux " & $wmp.currentPlaylist.count & @CR) Sleep(1000) For $i = 0 To $wmp.currentMedia.attributeCount - 1 ConsoleWrite($wmp.currentMedia.getAttributeName($i) & " : " & $wmp.currentMedia.getItemInfo($wmp.currentMedia.getAttributeName($i)) & @CR) Next Global $nbItem = $wmp.currentPlaylist.count Global $cible = $wmp.Controls.currentItem.Name _GUICtrlStatusBar_SetText($barre_etat, $cible)EndFunc ;==>_play_mediaFunc _suivant
() If $wmp.Playstate <> 0 Then $wmp.Controls.Next Global $cible = $wmp.Controls.currentItem.Name If $cible = "MaPlaylist" Then $wmp.Controls.playItem($wmp.currentPlaylist.Item(0)) ;si $cible est le nom de la playliste "30-11-2021", on revient à l'item 0 _GUICtrlStatusBar_SetText($barre_etat, $cible) For $i = 0 To $nbItem - 1 If $cible = $wmp.currentPlaylist.item($i).Name Then ExitLoop Next;~ ConsoleWrite($wmp.currentPlaylist.item($i).Name & " >> " & $i + 1 & "/" & $nbItem & @CR) EndIfEndFunc ;==>_suivantFunc _precedent
() If $wmp.Playstate <> 0 Then $wmp.Controls.Previous Global $cible = $wmp.Controls.currentItem.Name _GUICtrlStatusBar_SetText($barre_etat, $cible) For $i = 0 To $nbItem - 1 If $cible = $wmp.currentPlaylist.item($i).Name Then ExitLoop Next;~ ConsoleWrite($wmp.currentMedia.getItemInfo("title") & " >> " & $i + 1 & "/" & $nbItem & @CR) EndIfEndFunc ;==>_precedent
Il fonctionne impec.
Big love sur vous
++