z0mgItsJohn Posted June 21, 2009 Share Posted June 21, 2009 S.M.P. v1.0 - By : John O. Features :#1 Tray Mode #2 Cool Song Add Function (Drag & Drop)#3 Loop Song / Play All Options..Screen-shots : Source : expandcollapse popup#Include <GUIConstantsEx.Au3> #Include <WindowsConstants.Au3> #Include <Misc.Au3> #Include <Sound.Au3> #Include <File.Au3> #Include <String.Au3> #Include <GUIListBox.Au3> Opt ('GUIOnEventMode','1') Opt ('TrayMenuMode','1') Opt ('TrayOnEventMode','1') $SOptions = TrayCreateMenu ('Song Options') $TPlay_S = TrayCreateItem ('Play Song', $SOptions) TrayItemSetOnEvent ($TPlay_S, '_Play') $TStop_S = TrayCreateItem ('Stop Song', $SOptions) TrayItemSetOnEvent ($TStop_S, '_End') $TPause_S = TrayCreateItem ('Pause Song', $SOptions) TrayItemSetOnEvent ($TPause_S, '_Pause') $TPAll_S = TrayCreateItem ('Play All', $SOptions) TrayItemSetOnEvent ($TPAll_S, '_Play_All') $TLoop_S = TrayCreateItem ('Loop Song', $SOptions) TrayItemSetOnEvent ($TLoop_S, '_Loop') $POptions = TrayCreateMenu ('Program Options') $PHide = TrayCreateItem ('Hide / Show', $POptions) TrayItemSetOnEvent ($PHide, '_HideShow') $PExit = TrayCreateItem ('Exit', $POptions) TrayItemSetOnEvent ($PExit, '_Exit') Global $S_Pause = False, $Open = '-1', $Toggle = False, $S_Play = False, $Time_S = '-1', $P_All = False, $L = 0, $Pos, $Length, $Loop = False, $1 = False Global $Toggle = False, $Last = '-1' $GUI = GUICreate ('S.M.P. v1.0 - By : John O.','300','236','-1','-1','-1','128') GUISetBkColor ('0x000000') GUISetOnEvent ($GUI_EVENT_CLOSE, '_Exit') GUICtrlCreateGroup ('','5','0','289','32') $Slider = GUICtrlCreateSlider ('8','9','283','20', BitOr ('0x0008','0x0010')) GUICtrlSetOnEvent ($Slider, '_Seek') GUICtrlSetBkColor ($Slider, '0') GUICtrlCreateGroup ('','5','32','180','198') $List = GUICtrlCreateList ('- No Songs -','8','41','174','200', BitOr ('0x00100000','0x1000','0xA00003')) GUICtrlSetFont ($List, '9','600') GUICtrlSetColor ($List, '0x0000FF') GUICtrlCreateGroup ('','191','32','103','198') $Add = GUICtrlCreateButton ('Add Song','194','41','97','20','32896') GUICtrlSetOnEvent ($Add, '_Add_GUI') GUICtrlSetBkColor ($Add, '0x000000') GUICtrlSetColor ($Add, '0xFFFFFF') GUICtrlSetFont ($Add, '9','600') $Delete = GUICtrlCreateButton ('Delete Song','194','62','97','20','32896') GUICtrlSetOnEvent ($Delete, '_Delete') GUICtrlSetBkColor ($Delete, '0x000000') GUICtrlSetColor ($Delete, '0xFFFFFF') GUICtrlSetFont ($Delete, '9','600') $Play = GUICtrlCreateButton ('Play Song','194','83','97','20','32896') GUICtrlSetOnEvent ($Play, '_Play') GUICtrlSetBkColor ($Play, '0x000000') GUICtrlSetColor ($Play, '0xFFFFFF') GUICtrlSetFont ($Play, '9','600') $Stop = GUICtrlCreateButton ('Stop Song','194','104','97','20','32896') GUICtrlSetOnEvent ($Stop, '_End') GUICtrlSetBkColor ($Stop, '0x000000') GUICtrlSetColor ($Stop, '0xFFFFFF') GUICtrlSetFont ($Stop, '9','600') $Pause = GUICtrlCreateButton ('Pause Song','194','125','97','20','32896') GUICtrlSetOnEvent ($Pause, '_Pause') GUICtrlSetBkColor ($Pause, '0x000000') GUICtrlSetColor ($Pause, '0xFFFFFF') GUICtrlSetFont ($Pause, '9','600') $Play_All = GUICtrlCreateButton ('Play All','194','146','97','20','32896') GUICtrlSetOnEvent ($Play_All, '_Play_All') GUICtrlSetBkColor ($Play_All, '0x000000') GUICtrlSetColor ($Play_All, '0xFFFFFF') GUICtrlSetFont ($Play_All, '9','600') $Loop_Song = GUICtrlCreateButton ('Loop Song','194','167','97','20','32896') GUICtrlSetOnEvent ($Loop_Song, '_Loop') GUICtrlSetBkColor ($Loop_Song, '0x000000') GUICtrlSetColor ($Loop_Song, '0xFFFFFF') GUICtrlSetFont ($Loop_Song, '9','600') $L_Pos = GUICtrlCreateLabel ('00:00:00','213','192','100','20') GUICtrlSetColor ('-1','0xFF0000') GUICtrlSetBkColor ('-1', $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont ('-1','9','600','','Arial') GUICtrlCreateLabel ('___________','209','195','100','13') GUICtrlSetColor ('-1','0xFFFFFF') GUICtrlSetBkColor ('-1', $GUI_BKCOLOR_TRANSPARENT) $L_Length = GUICtrlCreateLabel ('00:00:00','213','208','100','20') GUICtrlSetColor ('-1','0xFF0000') GUICtrlSetBkColor ('-1', $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont ('-1','9','600','','Arial') GUISetState (@SW_SHOW, $GUI) WinSetOnTop ($GUI, '','1') _List () While '1' Sleep ('10') If $Toggle <> False Then $Pos = _SoundPos ($Open, '2') $Length = _SoundLength ($Open, '2') _Update (_SoundPos ($Open), _SoundLength ($Open)) If $Pos >= $Length Then _End () $X = $Pos / $Length * '100' If _Check () == '0' Then GUICtrlSetData ($Slider, $X) EndIf WEnd Func _Play () If $S_Play = True And $S_Pause = False Then Return @Error If $P_All = True Then $Song = FileReadLine ('List.ini', $L) If $Song = '-1' Then Return @Error $Open = _SoundOpen ($Song) _SoundPlay ($Open) $Toggle = True $S_Play = True Return '1' EndIf If $S_Pause = True Then $S_Pause = False _SoundResume ($Open) Else If FileExists ('List.ini') = '0' Then Return @Error If GUICtrlRead ($List) = '' Then Return @Error $Song = _GetCurrentSong () If $Song = '-1' Then Return @Error $Open = _SoundOpen ($Song) _SoundPlay ($Open) $Toggle = True $S_Play = True EndIf EndFunc Func _Convert ($Mili_Sec) Local $Hour = '0', $Min = '0', $Sec = '0', $R['4'] $Sec = $Mili_Sec / '1000' If $Sec > '60' Then Do $Sec = $Sec - '60' $Min = $Min + '1' Until $Sec < '60' EndIf If $Min > '60' Then Do $Min = $Min - '60' $Hour = $Hour + '1' Until $Min < '60' EndIf Dim $R $R['1'] = $Hour $R['2'] = $Min $R['3'] = $Sec Return $R EndFunc Func _Update ($S_Pos, $S_Length) If $Last <> '-1' And TimerDiff ($Last) < '800' Then Return @Error GUICtrlSetData ($L_Pos, $S_Pos) If GUICtrlRead ($L_Length) <> $S_Length Then GUICtrlSetData ($L_Length, $S_Length) $Last = TimerInit () EndFunc Func _Check () Local $Aa = '0' If _IsPressed ('01') Or _IsPressed ('25') Or _IsPressed ('27') Then $Aa = '1' If ControlGetFocus ($GUI) = 'msctls_trackbar321' And $Aa = '1' Then $Time_S = TimerInit () If $Time_S <> '-1' And TimerDiff ($Time_S) >= '1000' Then $Time_S = '-1' ElseIf $Time_S <> '-1' Then Return '1' EndIf If ControlGetFocus ($GUI) = 'msctls_trackbar321' And $Aa = '1' Then $Time_S = TimerInit () Return '1' Else Return '0' EndIf EndFunc Func _Add_GUI () WinSetOnTop ($GUI, '','0') Global $GUI_Add = GUICreate ('Drag-&-Drop 2 Add Files','200','100','-1','-1','-1', BitOr ('128','0x00000010')) GUISetBkColor ('0x000000') GUISetOnEvent ($GUI_EVENT_CLOSE, '_Exit_Add') GUISetOnEvent ($GUI_EVENT_DROPPED, '_Add') Global $Edit = GUICtrlCreateEdit ('','0','0','200','100','3') GUICtrlSetState ('-1', BitOr ($GUI_DISABLE, $GUI_DROPACCEPTED)) GUICtrlSetBkColor ('-1','0x000000') GUICtrlSetColor ('-1','0x000000') GUISetState (@SW_SHOW, $GUI_Add) WinSetOnTop ($GUI_Add, '','1') EndFunc Func _Exit () Exit EndFunc Func _Loop () If FileExists ('List.ini') = '0' Then Return @Error If $P_All = True Then Return @Error If GUICtrlRead ($List) = '' Then Return @Error If $Loop = False Then If $S_Play = False Then _Play () GUICtrlSetData ($Loop_Song, 'Stop Loop') TrayItemSetText ($TLoop_S, 'Stop Loop') GUICtrlSetState ($Stop, $GUI_DISABLE) TrayItemSetState ($TStop_S, '128') $Loop = True Else GUICtrlSetData ($Loop_Song, 'Loop Song') TrayItemSetText ($TLoop_S, 'Loop Song') GUICtrlSetState ($Stop, $GUI_ENABLE) TrayItemSetState ($TStop_S, '64') $Loop = False EndIf EndFunc Func _Add () GUICtrlSetData ($Edit, '') FileWriteLine ('List.ini', @GUI_DragFile) _List () EndFunc Func _List () Local $Data, $C If FileExists ('List.ini') = '1' Then $Count = _FileCountLines ('List.ini') For $A = '1' To $Count $Read = FileReadLine ('List.ini', $A) $Read = StringSplit ($Read, '\') $Read = _FileGetName ($Read[$Read['0']]) If $A < '10' Then $C = '0' & $A Else $C = $A EndIf $Data = $Data & '#' & $C & '.) ' & $Read & '|' Next $Data = StringTrimRight ($Data, '1') GUICtrlSetData ($List, '') GUICtrlSetData ($List, $Data) _GUICtrlListBox_UpdateHScroll ($List) EndIf EndFunc Func _FileGetName ($iFile) $Char = StringSplit (_FileGetType ($iFile), '') $Char = $Char['0'] Return StringTrimRight ($iFile, $Char) EndFunc Func _FileGetType ($iFile) $String = _StringReverse ($iFile) $String = StringSplit ($String, '.') $String = '.' & _StringReverse ($String['1']) Return $String EndFunc Func _Delete () If FileExists ('List.ini') = '0' Then Return @Error $Read = GUICtrlRead ($List) If $Read = '' Then Return @Error $Read = StringSplit ($Read, ')') $Line = StringReplace (StringReplace ($Read['1'], '#',''), '.','') If StringLeft ($Line, '1') = '0' Then $Line = StringTrimLeft ($Line, '1') WinSetOnTop ($GUI, '','0') $Msg = MsgBox ('4','Delete?','Are you sure you want to delete song #' & $Line & '?') WinSetOnTop ($GUI, '','1') If $Msg == '6' Then _Remove_Line ($Line) If $Msg == '6' And $P_All = True Then $L = $L - 1 If $Msg == '6' Then _End () EndFunc Func _Play_All () If $Loop = True Then Return @Error If FileExists ('List.ini') = '0' Then Return @Error If $P_All = False Then GUICtrlSetData ($Play_All, 'Stop All') TrayItemSetText ($TPAll_S, 'Stop All') GUICtrlSetData ($Stop, 'Next Song') TrayItemSetText ($TStop_S, 'Next Song') $P_All = True $L = 1 _GUICtrlListBox_SetCurSel ($List, 0) _Play () Else GUICtrlSetData ($Play_All, 'Play All') TrayItemSetText ($TPAll_S, 'Play All') GUICtrlSetData ($Stop, 'Stop Song') TrayItemSetText ($TStop_S, 'Stop Song') $P_All = False $L = 0 GUICtrlSetData ($Slider, '0') _GUICtrlListBox_SetCurSel ($List, $L - 1) _End () EndIf EndFunc Func _GetCurrentSong () $Split = StringSplit (GUICtrlRead ($List), ')') $Split = StringReplace (StringReplace ($Split['1'], '#',''),'.','') If StringLeft ($Split, '1') = '0' Then $Split = StringTrimLeft ($Split, '1') Return FileReadLine ('List.ini', $Split) EndFunc Func _Remove_Line ($iLine) Local $Temp = @TempDir & '\Temp.txt' $Count = _FileCountLines ('List.ini') If $Count = '1' And $iLine = '1' Then FileDelete ('List.ini') GUICtrlSetData ($List, '') GUICtrlSetData ($List, '- No Songs -') Return @Error EndIf For $A = '1' To $Count If $A <> $iLine Then FileWriteLine ($Temp, FileReadLine ('List.ini', $A)) Next FileCopy ($Temp, @ScriptDir & '\List.ini', '1') FileDelete ($Temp) _List () EndFunc Func _End () If GUICtrlRead ($List) = '' Then Return @Error If $L = _FileCountLines ('List.ini') Then _Play_All () If $Toggle = False Then Return @Error If $S_Play = False Then Return @Error _SoundStop ($Open) _SoundClose ($Open) $S_Pause = False $Open = '-1' $Toggle = False $S_Play = False $Pos = '0' $Length = '1' $Last = '-1' _Update ('00:00:00','00:00:00') GUICtrlSetData ($Slider, '0') If $Loop = True Then _Play () If $P_All = True Then $L = $L + 1 _GUICtrlListBox_SetCurSel ($List, $L - 1) _Play () EndIf EndFunc Func _Pause () If $Toggle = False Then Return @Error If $S_Play = False Then Return @Error If $S_Pause = True Then Return @Error $S_Pause = True _SoundPause ($Open) EndFunc Func _Seek () If $Toggle = False Then Return @Error If $S_Play = False Then Return @Error _SoundStop ($Open) $S = GUICtrlRead ($Slider) If $S = '100' Then _End () $P = (_SoundLength ($Open, '2') / '100') * $S $P = _Convert ($P) _SoundSeek ($Open, Round ($P['1'], '0'), Round ($P['2'], '0'), Round ($P['3'], '0')) _SoundPlay ($Open) EndFunc Func _HideShow () If $Toggle = False Then $Toggle = True WinSetState ($GUI, '', @SW_HIDE) Else $Toggle =False WinSetState ($GUI, '', @SW_SHOW) EndIf EndFunc Func _Exit_Add () WinSetOnTop ($GUI_Add, '','0') GUIDelete ($GUI_Add) WinSetOnTop ($GUI, '','1') EndFuncDownload : [Click Here] *Includes Compiled VersionWell I hope this helps people out !- John Latest Projects :- New & Improved TCP Chat Link to comment Share on other sites More sharing options...
mesale0077 Posted June 21, 2009 Share Posted June 21, 2009 hi nice code but always top onthe desktop , can you add volume control button?,add try mode Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now