Voici mon deuxième script: un créateur de liste de lecture pour winamp et le lecteur windows media.
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <ProgressConstants.au3>
#include <EditConstants.au3>
#include <ListViewConstants.au3>
#include <Constants.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <Timers.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <Misc.au3>
#include "Includes\Bass.au3"
#include "Includes\GDIPlus.au3"
#include "Includes\Recursive.au3"
#include "Includes\ModernMenuFixed.au3"
#include "Includes\ExtProp.au3"
#include "Includes\GUIEnhance.au3"
#include "Includes\GUICtrlSetOnHover_UDF.au3"
Dim $updater_gui,$backbuffer,$backbuffer2,$szDrive, $szDir, $szFName, $szExt , $brush,$stop_btn,$fwd_btn,$ini_sleep,$bitmap,$graphics,$gui_artist_txt,$ar,$gui_title_txt,$ti,$gui_album_txt,$search_array_orig, $al,$aaaa,$ai_Handle,$ai_Return,$status_txt
Opt("TrayMenuMode",1)
$playlist_gui = GUICreate("Createur de liste de lecture Winmap + WMP(*.m3u;*.pls)", 350, 407, -1, -1, $WS_SIZEBOX, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
GUISetBkColor(0x000000)
_SetMenuBkColor(0x000000)
_SetMenuIconBkColor(0x000000)
_SetMenuTextColor(0xFFFFFF)
_SetMenuSelectRectColor(0x555555)
_SetMenuSelectTextColor(0xFFFFFF)
$playlist = GUICtrlCreateListView("Artist|Titre|Album|Directive", 8, 38, 335, 341)
GUICtrlSendMsg(-1, 0x101E, 0, 92)
GUICtrlSendMsg(-1, 0x101E, 1, 92)
GUICtrlSendMsg(-1, 0x101E, 2, 92)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM)
GUICtrlSetOnEvent(-1, "pevent")
;Creating context menu
$playlist_menu = GUICtrlCreateContextMenu($playlist)
$pls_addfile = _GUICtrlCreateODMenuItem("Ajouter Fichiers", $playlist_menu)
$pls_addfolder = _GUICtrlCreateODMenuItem("Ajouter Dossiers", $playlist_menu)
$pls_delentry = _GUICtrlCreateODMenuItem("Retirer de la liste", $playlist_menu)
_GUICtrlCreateODMenuItem("", $playlist_menu)
$pls_save = _GUICtrlCreateODMenuItem("Enregistrer la liste de lecture", $playlist_menu)
$pls_load = _GUICtrlCreateODMenuItem("Charger la liste de lecture", $playlist_menu)
$pls_export = _GUICtrlCreateODMenuItem("Expoter la liste de lecture", $playlist_menu)
$pls_clear = _GUICtrlCreateODMenuItem("Netoyer la liste de lecture", $playlist_menu)
$searchi = GUICtrlCreateInput("", 8, 8, 203, 21)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHEIGHT)
$searchbtn = GUICtrlCreateButton("Chercher", 220, 7, 50, 24, 0)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHEIGHT+$GUI_DOCKWIDTH)
$resetbtn = GUICtrlCreateButton("Reinitialiser", 270, 7, 75, 24, 0)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHEIGHT+$GUI_DOCKWIDTH)
_GUICtrlListView_RegisterSortCallBack($playlist)
pls_load()
GUISetState(@SW_SHOW)
$tabout = TrayCreateItem("À propos de")
TrayCreateItem("")
$texit = TrayCreateItem("Quitter")
While 1
$msg = GUIGetMsg()
$tmsg = TrayGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $pls_addfile
pls_addfile()
Case $msg = $pls_addfolder
pls_addfolder()
Case $msg = $pls_delentry
pls_delentry()
Case $msg = $pls_save
pls_save()
Case $msg = $pls_load
pls_load()
Case $msg = $pls_export
pls_export()
Case $msg = $pls_clear
pls_clear()
Case $msg = $searchbtn
pls_search()
Case $msg = $resetbtn
pls_reset()
Case $tmsg = $tabout
_about()
Case $tmsg = $texit
_Exit()
EndSelect
WEnd
;===================== Playlist functions ====================
Func pls_addfile()
$sFile = FileOpenDialog("Selectionner fichiers audio ", "", "Audio Files (*.mp3;*.mp2;*.mp1;*.wav;*.ogg;*.aiff)|MP3 (*.mp3)|MP2 (*.mp1)|MP3 (*.mp1)|WAV (*.wav)|OGG (*.ogg)AIFF (*.aiff)|")
If FileExists($sFile) Then
$path = $sFile
If @OSVersion = "WIN_VISTA" Then
$ar = _GetExtProperty($path, 13)
$ti = _GetExtProperty($path, 21)
$al = _GetExtProperty($path, 14)
Else
$ar = _GetExtProperty($path, 16)
$ti = _GetExtProperty($path, 10)
$al = _GetExtProperty($path, 17)
EndIf
$artist1 = $ar & "¦"
$title1 = $ti & "¦"
$album1 = $al & "¦"
GUICtrlCreateListViewItem($artist1 & $title1 & $album1 & $path, $playlist)
GUICtrlSendMsg($playlist, 0x101E, 0, 92)
GUICtrlSendMsg($playlist, 0x101E, 1, 92)
GUICtrlSendMsg($playlist, 0x101E, 2, 92)
GUICtrlSendMsg($playlist, 0x101E, 3, 92)
EndIf
EndFunc
Func pls_addfolder()
$pcdir = FileSelectFolder("Selectionner dossiers", "")
If $pcdir <> "" Then
$filesArray = RecursiveFileSearch($pcdir, "(?i)\.(mp3)")
If Not IsArray($filesArray) Then
TrayTip("", "Dossier ou sous-dossier vide !", 2, 1)
Else
_GUICtrlListView_BeginUpdate($playlist)
GUICtrlSetState($searchbtn,$GUI_DISABLE)
For $i = 1 To $filesArray[0]
$path = $filesArray[$i]
If @OSVersion = "WIN_VISTA" Then
$ar = _GetExtProperty($path, 13)
$ti = _GetExtProperty($path, 21)
$al = _GetExtProperty($path, 14)
Else
$ar = _GetExtProperty($path, 16)
$ti = _GetExtProperty($path, 10)
$al = _GetExtProperty($path, 17)
EndIf
GUICtrlCreateListViewItem($ar & "|" & $ti & "|" & $al & "|" & $path, $playlist)
Next
_GUICtrlListView_EndUpdate($playlist)
GUICtrlSetState($searchbtn,$GUI_ENABLE)
EndIf
GUICtrlSendMsg($playlist, 0x101E, 0, 92)
GUICtrlSendMsg($playlist, 0x101E, 1, 92)
GUICtrlSendMsg($playlist, 0x101E, 2, 92)
GUICtrlSendMsg($playlist, 0x101E, 3, 92)
EndIf
EndFunc
Func pls_delentry()
_GUICtrlListView_BeginUpdate($playlist)
_GUICtrlListView_DeleteItemsSelected($playlist)
_GUICtrlListView_EndUpdate($playlist)
EndFunc
Func pls_save()
$pls_save_max = _GUICtrlListView_GetItemCount($playlist)
$pls_loc = @ScriptDir & "\playlist.pls"
If FileExists($pls_loc) = 0 Then _FileCreate($pls_loc)
$pls_file = FileOpen($pls_loc, 2)
;~ GUICtrlSetState($playlist,$GUI_HIDE)
;~ GUICtrlSetState($searchbtn,$GUI_DISABLE)
For $i = 0 To $pls_save_max
FileWrite($pls_loc, _GUICtrlListView_GetItemTextString($playlist,$i) & @CRLF)
Next
FileClose($pls_file)
;~ GUICtrlSetState($playlist,$GUI_SHOW)
;~ GUICtrlSetState($searchbtn,$GUI_ENABLE)
EndFunc
Func pls_load()
pls_clear()
$pls_loc = @ScriptDir & "\playlist.pls"
$pls_file = FileOpen($pls_loc, 0)
$pls_load_max = _FileCountLines($pls_loc) - 1
;~ GUICtrlSetState($playlist, $GUI_HIDE)
_GUICtrlListView_BeginUpdate($playlist)
GUICtrlSetState($searchbtn,$GUI_DISABLE)
For $i = 1 To $pls_load_max
$pls_read = FileReadLine($pls_file, $i)
GUICtrlCreateListViewItem($pls_read, $playlist)
Next
;~ GUICtrlSetState($playlist, $GUI_SHOW)
_GUICtrlListView_EndUpdate($playlist)
GUICtrlSetState($searchbtn,$GUI_ENABLE)
GUICtrlSendMsg($playlist, 0x101E, 0, 92)
GUICtrlSendMsg($playlist, 0x101E, 1, 92)
GUICtrlSendMsg($playlist, 0x101E, 2, 92)
GUICtrlSendMsg($playlist, 0x101E, 3, 92)
_Optimize()
EndFunc
Func pls_clear()
GUICtrlSetState($searchbtn,$GUI_DISABLE)
_GUICtrlListView_BeginUpdate($playlist)
_GUICtrlListView_DeleteAllItems($playlist)
_GUICtrlListView_EndUpdate($playlist)
GUICtrlSetState($searchbtn,$GUI_ENABLE)
EndFunc
Func pls_search()
GUICtrlSetState($searchbtn,$GUI_DISABLE)
;Create array with playlist contents
Dim $search_array_orig[1],$search_array[1]
For $i = 0 To _GUICtrlListView_GetItemCount($playlist)
_ArrayAdd($search_array_orig, _GUICtrlListView_GetItemTextString($playlist, $i))
Next
$search_string = GUICtrlRead($searchi)
If @error = 1 Then
Else
$sa = _GUICtrlListView_FindInText($playlist, $search_string)
$sa1 = _GUICtrlListView_GetItemTextString($playlist, $sa)
_ArrayAdd($search_array, $sa1)
If $sa = -1 Then
MsgBox(32, "Createur de liste de lecture Winmap + WMP(*.m3u;*.pls)", "Aucun fichiers contenant '" & $search_string & "' a été trouvé !")
pls_reset()
Else
$sa2 = True
Dim $sb
While $sb <> -1
If $sa2 = True Then
$sb = _GUICtrlListView_FindInText($playlist, $search_string, $sa, FALSE)
Else
$sb = _GUICtrlListView_FindInText($playlist, $search_string, $sb, FALSE)
EndIf
$sb1 = _GUICtrlListView_GetItemTextString($playlist, $sb)
_ArrayAdd($search_array, $sb1)
$sa2 = False
WEnd
$search_array[0] = _ArrayMaxIndex($search_array)
pls_clear()
_GUICtrlListView_BeginUpdate($playlist)
For $i = 1 To $search_array[0]
GUICtrlCreateListViewItem($search_array[$i], $playlist)
Next
GUICtrlSendMsg($playlist, 0x101E, 0, 92)
GUICtrlSendMsg($playlist, 0x101E, 1, 92)
GUICtrlSendMsg($playlist, 0x101E, 2, 92)
GUICtrlSendMsg($playlist, 0x101E, 3, 92)
_GUICtrlListView_EndUpdate($playlist)
EndIf
EndIf
EndFunc
Func pls_reset()
pls_clear()
_GUICtrlListView_BeginUpdate($playlist)
For $i = 1 To _ArrayMaxIndex($search_array_orig)
GUICtrlCreateListViewItem($search_array_orig[$i],$playlist)
Next
_GUICtrlListView_EndUpdate($playlist)
GUICtrlSetState($searchbtn,$GUI_ENABLE)
EndFunc
Func pls_export()
$plsloc2 = FileSaveDialog(" Export liste de lecture", "", "M3U (*.m3u)", "", "playlist.m3u")
If StringRight($plsloc2, 3) = "m3u" Then
$plsloc3 = FileOpen($plsloc2, 2)
$max3 = _GUICtrlListView_GetItemCount($playlist) - 1
FileWrite($plsloc3, "#EXTM3U" & @CRLF)
For $i = 0 To $max3
$text = _GUICtrlListView_GetItemTextArray($playlist, $i)
$atext = _PathSplit($text[4], $szDrive, $szDir, $szFName, $szExt)
FileWrite($plsloc3, "#EXTINF:0," & $atext[3] & @CRLF)
FileWrite($plsloc3, $text[4] & @CRLF)
FileWrite($plsloc3, @CRLF & @CRLF)
Next
FileClose($plsloc3)
EndIf
EndFunc ;==>plsexport
Func pevent()
_GUICtrlListView_SortItems($playlist, GUICtrlGetState($playlist))
EndFunc ;==>pevent
Func _Optimize($i_PID = -1)
If $i_PID <> -1 Then
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
Else
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return[0]
EndFunc ;==>_Optimize
Func _about()
MsgBox(64,"À propos de","Créatuer de liste de lecture M3U et PLS pour Winamp et WMP " & @CRLF & " Auteur: Neo2606")
EndFunc
Func _Exit()
Exit
EndFunc
Suggestion et remarque sont bienvenue!
- Playlist crea.zip
- Zip contenant tout les fichiers nécessaires.
- (86.84 Kio) Téléchargé 234 fois