• Da ich in letzter Zeit instabiles Internet hatte :huh: ,
    habe ich mich gut mit Musik zugedröhnt.

    Dann kam ich auf die Idee nen Musikspieler zu machen,
    der vor allem eins können sollte:
    Den Computer um eine bestimmte Zeit herunterfahren.

    Nun,hier habe ich ihn,Version 1.8:


    Weitere Informationen und Downloads gibt es auf der Homepage

    Download:
    Angehängt


    Und wer Ideen hat,nur her damit,würde gerne noch mehr hinzufügen,habe gerade nur keine Ideen :thumbup:


    Quellcode: Angehängt und siehe unten

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Res_LegalCopyright Nicolas Giese
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <array.au3>
    #include <Sound.au3>
    #include <EditConstants.au3>
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Spuren löschen
    Opt("OnExitFunc","OnExit")
    ;um das standart traymenü wegzubekommen
    Opt("TrayAutoPause",0)
    Opt("TrayMenuMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Debugging,meist deaktiviert
    ;Opt("TrayIconDebug",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;playlist löschen (wichtig,falls abgebrochen gestartet wurde)
    FileDelete(@Tempdir & "\soundfiles.txt")

    [/autoit] [autoit][/autoit] [autoit]

    #Region Variable
    $space = " "
    ;gebraucht um die gesamte Statusbar grau zu färben

    [/autoit] [autoit][/autoit] [autoit]

    $loop1 = 0
    $readnumber = 1
    Global $readsoundplay
    Global $openedsoundfile
    Global $paused = 0
    Global $stopped = 0
    Global $loop
    Global $timer = 0
    Global $onesound = 0
    Global $visualnumber
    Global $lastsong = "firstplay"
    Global $optionplay = 1 ;1 = Zufall, 2 = Alphabetisch/Liste
    Global $aktuelleslied = 1

    [/autoit] [autoit][/autoit] [autoit]

    $version = "1.8"

    [/autoit] [autoit][/autoit] [autoit]

    ;um da verschiedene Werte zu speichern
    RegWrite("HKEY_CURRENT_USER\Software\NMW")

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion
    ;region ,du darfst nicht weiter nach unten ;)

    [/autoit] [autoit][/autoit] [autoit]

    ;traytooltip default setzen (bis zum starten der musik)
    TraySetToolTip("Nicksoft Media Player " & $version & @crlf & "Warten auf Musik...")

    [/autoit] [autoit][/autoit] [autoit]

    ;Traymenü erstellen für bessere Handlichkeit
    #Region CreateTray
    $trayinfo = TrayCreateItem("Info")
    ;strich im menü
    TrayCreateItem("")
    $trayplay = TrayCreateItem("Play")
    TrayCreateItem("")
    $trayexit = TrayCreateItem("Exit")
    #EndRegion
    ;und wieder ein stop fürs endregion

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;visual auswählen
    choosevisual()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Nicksoft Media Player " & $version,500,400)
    ;Farbe
    GUISetBkColor(0x828AAC)

    [/autoit] [autoit][/autoit] [autoit]

    ; Musikdateien auflisten ; liste,kein edit (mehr),da keine direktwahl gemacht werden kann
    $list = GUICtrlCreateList("Nothing selected",5,10,150,350)
    $listmenu = GUICtrlCreateContextMenu($list)
    $listitem1 = GUICtrlCreateMenuItem("Play",$listmenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Menü
    $filemenu = GUICtrlCreateMenu("&File")
    $fileitem = GUICtrlCreateMenuItem("Open", $filemenu)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $saveitem = GUICtrlCreateMenuItem("Save", $filemenu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $infomenu = GUICtrlCreateMenu("?")
    $infoitem = GUICtrlCreateMenuItem("Info",$infomenu)
    $howtoplay1song = GUICtrlCreateMenuItem("Wie spiele ich Lieder direkt?",$infomenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Timer bis zum Herunterfahren von Windows
    $timermenu = GUICtrlCreateMenu("Timer")
    $timeritem = GUICtrlCreateMenuItem("Shutdowntimer",$timermenu)

    [/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Zufall oder Listenspielart wählbar
    $playoption = GUICtrlCreateMenu("Optionen")
    $randomitem = GUICtrlCreateMenuItem("Zufällig",$playoption)
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)
    $abcitem = GUICtrlCreateMenuItem("Alphabetisch",$playoption)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Statusbar
    ;Anzeige für aktuell spielendes Lied ist in der Statusbar !
    $statuslabel = GUICtrlCreateLabel("Ready" & $space,0,365,500,15,BitOR($SS_SIMPLE, $SS_SUNKEN))
    GUICtrlSetBkColor($statuslabel,0xE0DFE3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Start + Pause + Stop
    $start = GUICtrlCreateButton(">",165,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $pause = GUICtrlCreateButton(":",270,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $stop = GUICtrlCreateButton("Stop",375,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Visualisierung
    GUICtrlCreateGroup("Visual",165,25,320,200)
    $visual = GUICtrlCreateAvi($visualnumber,-1,180,50,150,150)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;volumen
    GUICtrlCreateGroup("Volumen",165,270,320,50)
    $volume = GUICtrlCreateSlider(170,285,300,25)
    ;färben
    GUICtrlSetBkColor(-1,0x828AAC)
    ;0-100 = 100% und saubere schritte
    GUICtrlSetLimit($volume,100,0)
    ;Default auf vollem Volumen
    GUICtrlSetData($volume,100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    $tray = TrayGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE ;wenn Fenster geschlossen wurde
    ;hinweis,dass der Tiomer nach schließen nichtmehr Funktioniert
    If $timer = 1 Then
    ;4 = yes & No,32 = Fragezeichen
    $msgbox = MsgBox(4 + 32,"NIcksoft Media Player schließen","Der Shutdowntimer wurde aktiviert !" & @crlf & "Wenn Sie den Player beenden, funktioniert diese Funktion nicht mehr !" & @crlf & @crlf & "Möchten Sie wirklich beenden?")
    ;wenn nein gedrückt wurde:
    If $msgbox = 7 Then
    ;zurückkehren
    ExitLoop
    EndIf
    EndIf
    Exit
    Case $msg = $fileitem
    open()
    openbuttons()
    Case $msg = $infoitem
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $msg = $howtoplay1song
    MsgBox(0,"Wie spiele ich einen einzelnen Song aus der Playlist?","Markiere mit der Maus ein Lied und " & @crlf & "öffne dann das Kontextmenü. (Rechtsklick)")
    Case $msg = $start
    start()
    Case $msg = $pause
    pause()
    Case $msg = $stop
    stop()
    Case $msg = $timeritem
    $zeitexample = @HOUR & ":" & @MIN
    $zeit = InputBox("Shutdowntimer","Mit dieser Funktion kann sich ihr Windows um eine bestimmte Zeit herunterfahren." & @crlf & "Es ist zur Zeit : " & $zeitexample & @crlf & "Nach diesem Muster geben Sie bitte die Zieluhrzeit ein:","","",300,200)
    GUICtrlSetState($timeritem, $GUI_CHECKED)
    If @error Then ContinueLoop
    $timer = 1
    Case $msg = $listitem1
    contextlist()
    Case $msg = $saveitem
    playlistspeichern()
    Case $msg = $abcitem ;auf liste umgestellt
    changetolist()
    Case $msg = $randomitem
    changetorandom()

    Case $tray = $trayinfo
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $tray = $trayplay
    open()
    openbuttons()
    Case $tray = $trayexit
    Exit

    Case Else
    volume()
    If $timer = 1 Then
    If @hour & ":" & @MIN = $zeit Then
    Shutdown(5)
    Exit
    EndIf
    EndIf
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; FUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; - GUIFUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func open()
    ;Datei aussuchen, mehrfachauswahl
    $fileselect = FileOpenDialog("Choose Music",@Desktopdir,"Music & NMP-Playlist (*.mp3;*.wma;*.wav;*.nmp)",1 + 4)
    ;wenn abgebrochen wurde:
    If @error Then Return


    ;gucken ob Playlist
    $look1 = StringInStr($fileselect,".nmp")
    If $look1 > 1 Then
    ;Datei an Playlistort kopieren & zurückbennen
    FileCopy($fileselect,@Tempdir & "\soundfiles.txt")
    ;warten bis fertig kopiert
    Do
    Sleep(100)
    Until FileExists(@Tempdir & "\soundfiles.txt")
    ;schleife um alle Einträge in die Liste einzutragen
    ;-------
    $loopsearch = 2
    ;-------/
    Do
    $read = FileReadLine(@Tempdir & "\soundfiles.txt",$loopsearch)
    If @error Then ExitLoop
    If $read = "" Then ExitLoop
    GUICtrlSetData($list,$read)
    $loopsearch = $loopsearch + 1
    Until @error
    start()
    Else
    ;gucken ob nur einzelauswahl
    $look = StringInStr($fileselect,"|")
    If $look > 1 Then
    ;mehrfachauswahl zurecht stutzen
    #Region imported
    $durchsuchen1 = StringReplace($fileselect, "|", @CRLF)
    FileWriteLine(@Tempdir & "\search.tmp",$durchsuchen1)
    ;-------
    $loopsearch = 2
    ;-------/
    $read1stlinesearch = FileReadLine(@Tempdir & "\search.tmp",1)
    Do
    $readxlinesearch = FileReadLine(@Tempdir & "\search.tmp",$loopsearch)
    $err = @error
    $loopsearch = $loopsearch + 1
    If $readxlinesearch = "" Then
    FileDelete(@Tempdir & "\search.tmp")
    ExitLoop
    EndIf
    GUICtrlSetData($list,$readxlinesearch,-1)
    FileWriteLine(@Tempdir & "\soundfiles.txt",$read1stlinesearch & "\" & $readxlinesearch & @CRLF) ;da z.Zeit liste,kein edit ist,wird playlist gespeichert
    Until $err = -1
    #EndRegion
    start()
    Else
    ;wenn vorher nur ein lied,jetzt zurücksetzen (playlist wird ja geschrieben)
    $onesound = 0
    ;bisherige Musik stoppen
    _SoundClose($openedsoundfile)
    AdlibDisable()
    ;neue Datei öffnen & abspielen
    $openedsoundfile = _SoundOpen($fileselect)
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;datei auf edit setzen
    GUICtrlSetData($list,$fileselect)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lied in statusbar schreiben
    status($fileselect)
    ;markieren als besonderes event
    $onesound = 1
    EndIf

    ;playlist speichern jetzt möglich machen
    GUICtrlSetState($saveitem,$GUI_ENABLE)
    Endif

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;alle knöpfe freischalten
    Func openbuttons()
    GUICtrlSetState($pause, $GUI_ENABLE)
    ;bis stoptaste wieder funktioniert wird sie deaktiviert
    GUICtrlSetState($stop, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn der startknopf gedrückt wurde....
    Func start()
    ;startknopf wieder deaktivieren
    GUICtrlSetState($start, $GUI_DISABLE)

    ;falls aus einer pause gestartet wurde -> forfahren
    If $paused = 1 Then
    $paused = 0
    fortfahren()
    Return
    EndIf

    ;Wieviele Lieder sind in in der Playlist gespeichert ? (1 Linie = 1 Pfad zu 1 Lied)
    Countlines()

    [/autoit] [autoit][/autoit] [autoit]

    ;maximale Anzahl der Lieder speichern für zufallsauswahl
    RegWrite("HKEY_CURRENT_USER\Software\NMW","lines","REG_SZ",$loop)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lieder abspielen starten
    If $optionplay = 1 Then
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn pause gedrückt wurde
    Func pause()
    ;sound nicht mehr abspielen
    AdlibDisable()
    _SoundPause($openedsoundfile)
    ;merken -> nur pause
    $paused = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;in statusbar eintragen
    status("paused")
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func stop()
    ;abspielen beenden
    AdlibDisable()
    _SoundClose($openedsoundfile)
    ;in der statusbar als gestoppt anzeigen
    status("stopped" & $space)
    ;merken -> nur stop
    Global $stopped = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    ;in trayicon anzeigen
    TraySetToolTip("Gestoppt")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func contextlist()
    ;markierten eintrag auslesen
    $read = GUICtrlRead($list)
    ;falls kein Lied ausgewählt wurde
    If $read = "Nothing selected" Or "" Then
    MsgBox(0,"Nicksoft Media Player","Bitte wählen Sie ein Musiktitel aus!")
    Return
    EndIf
    ;sound stoppen
    _SoundStop($openedsoundfile)
    ;ausgelesenes öffnen
    $openedsoundfile = _SoundOpen($read)
    ;ausgelesenes starten
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;zur weiterverarbeitung den Eintrag in der Playlist suchen und Zeile speichern
    $detectline = 1
    Do
    $readcontext = FileReadLine(@Tempdir & "\soundfiles.txt",$detectline)
    $stringstr = StringInStr($readcontext,$read)
    $detectline = $detectline + 1
    Until $stringstr > 1
    ;für alphabet-abspielung speichern
    $aktuelleslied = $detectline

    ;statusbar eintragen
    status($readcontext)
    ;danach soll ja weitergemacht werden ! :

    ;erst bisheriges stoppen (falls es schon lief)
    AdlibDisable()
    If $optionplay = 1 Then
    ;dann neustarten
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func playlistspeichern()
    ;speicherort auswählen lassen
    $saveplaylist = FileSaveDialog("Playlist speichern",@Desktopdir,"NMP-Playlist (*.nmp)")
    ;wenn abgebrochen wurde zurückkehren
    If @error Then Return
    FileCopy(@Tempdir & "\soundfiles.txt",$saveplaylist & ".nmp",1)
    ;playlist speichern jetzt nichtmehr möglich machen
    GUICtrlSetState($saveitem,$GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetolist()

    $optionplay = 2

    ;option random wieder einblenden
    GUICtrlSetState($randomitem, $GUI_UNCHECKED)
    GUICtrlSetState($randomitem, $GUI_ENABLE)

    ;option ausblenden
    GUICtrlSetState($abcitem, $GUI_CHECKED)
    GUICtrlSetState($abcitem, $GUI_DISABLE)


    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetorandom()

    $optionplay = 1

    ;option list wieder einblenden
    GUICtrlSetState($abcitem, $GUI_UNCHECKED)
    GUICtrlSetState($abcitem, $GUI_ENABLE)

    ;option ausblenden
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; -andere Funktionen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;schnell statusbar beschreiben
    Func status($titel)
    GUICtrlSetData($statuslabel,$titel & $space) ;$space um statusbar immer grau zu hinterlegen
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um zu sehen,ob noch eine Datei gespielt wird (wenn nötig nächstes stück laden)
    Func playsound()
    ;wenn option geändert wurde
    If $optionplay <> 1 Then
    AdlibDisable()
    AdlibEnable("playsoundlist")
    EndIf

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)
    If not FileExists(@Tempdir & "\soundfiles.txt") Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then
    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;zufallslinie auswählen von 1 bis zu der letzten zeile (registry ausgelesen)
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ElseIf $status = "stopped" Then
    ;da zur Zeit Fehler unbekannt neue Art=
    If $stopped = 1 Then
    MsgBox(0,"test;func fortfahrenstopp","runned")
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    $readsoundplay
    Else
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;dann fahre fort
    ExitLoop
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wird aufgerufen,falls nichts gedrückt wurde (Konflikt mit Adlib funktion playsound)
    Func volume()
    ;slider auslesen
    $read = GUICtrlRead($volume)
    ;wert einstellen
    SoundSetWaveVolume($read)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    ;Registrywerte löschen
    RegDelete("HKEY_CURRENT_USER\Software\NMW")
    ;lied beenden
    _SoundClose($openedsoundfile)
    ;playlist löschen (wichtig)
    FileDelete(@Tempdir & "\soundfiles.txt")

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wenn lied als gepaust gemerkt wurde:
    Func fortfahren()
    ;mit lied fortfahren
    _SoundResume($openedsoundfile)
    ;falls nur eine musikdatei gespielt wird,gibt es (logischerweise) keine Playlist !
    If $onesound = 1 Then
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf
    status($readsoundplay)
    ;visual aktivieren
    GUICtrlSetState($visual,1)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;linien der Playlist zählen:
    Func Countlines()
    ;initialisiere zählen
    $countlines1 = 1
    ;schleife:
    Do
    ;x.-te Zeile auslesen
    FileReadLine(@Tempdir & "\soundfiles.txt",$countlines1)
    ;errormarkierung speichern (da sonst verfällt)
    $err = @error
    ;variable raufzählen
    $countlines1 = $countlines1 + 1
    ;schleife bis @error = -1 (Dateiende)
    Until $err = -1 Or $countlines1 > 1000
    ;endergebnis speichern
    $loop = $countlines1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;zufallsvisual auswählen & in variable speichern
    Func choosevisual()

    $result = Round(Random(1,4))
    $visualnumber = "visual.avi"

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um nach liste zu spielen (unterschied zu dem zufallsabspielen)
    Func playsoundlist()

    ;wenn option geändert wurde
    If $optionplay <> 2 Then
    AdlibDisable()
    AdlibEnable("playsound")
    EndIf

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)

    If not FileExists(@Tempdir & "\soundfiles.txt") Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then

    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;aus der playlist die nächste zeile auswähen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;für nächsten start nachsehen
    $aktuelleslied = $aktuelleslied + 1
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ;wenn die position des liedes = maximallänge ist:
    ElseIf $status = "stopped" Then
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;wenn das letzte lied gespielt wurde :
    If @error Then
    MsgBox(64,"Playlist beendet","Playlist ist nun einmal durchgelaufen!")
    Return
    EndIf
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]


    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]


    Habe es extra ganz viel Kommentiert,da ich es dann in naher Zukunft wieder verstehe bzw. ein bekannter von mir versucht auch AutoIt zu lernen, vielleicht hilft ihm das !

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Hi,
    erstmal guter Media Player gefällt mir vorallem mit der Visual :D .
    Ich habe da aber ein Bug gefunden der dir bestimmt interessieren könnte.
    Und zwar wenn ich auf Pause klicke und dann wieder auf Play dann kommt eine Fehlermeldung, siehe Bild.

    MfG

    M3HM3T

  • Und gefixxt.

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Res_LegalCopyright Nicolas Giese
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <array.au3>
    #include <Sound.au3>
    #include <EditConstants.au3>
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Spuren löschen
    Opt("OnExitFunc","OnExit")
    ;um das standart traymenü wegzubekommen
    Opt("TrayAutoPause",0)
    Opt("TrayMenuMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Debugging,meist deaktiviert
    Opt("TrayIconDebug",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;playlist löschen (wichtig,falls abgebrochen gestartet wurde)
    FileDelete(@Tempdir & "\soundfiles.txt")

    [/autoit] [autoit][/autoit] [autoit]

    #Region Variable
    $space = " "
    ;gebraucht um die gesamte Statusbar grau zu färben

    [/autoit] [autoit][/autoit] [autoit]

    $loop1 = 0
    $readnumber = 1
    Global $readsoundplay
    Global $openedsoundfile
    Global $paused = 0
    Global $stopped = 0
    Global $loop
    Global $timer = 0
    Global $onesound = 0
    Global $visualnumber
    Global $lastsong = "firstplay"
    Global $optionplay = 1 ;1 = Zufall, 2 = Alphabetisch/Liste
    Global $aktuelleslied = 1

    [/autoit] [autoit][/autoit] [autoit]

    $version = "1.8.1"

    [/autoit] [autoit][/autoit] [autoit]

    ;um da verschiedene Werte zu speichern
    RegWrite("HKEY_CURRENT_USER\Software\NMW")

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion
    ;region ,du darfst nicht weiter nach unten ;)

    [/autoit] [autoit][/autoit] [autoit]

    ;traytooltip default setzen (bis zum starten der musik)
    TraySetToolTip("Nicksoft Media Player " & $version & @crlf & "Warten auf Musik...")

    [/autoit] [autoit][/autoit] [autoit]

    ;Traymenü erstellen für bessere Handlichkeit
    #Region CreateTray
    $trayinfo = TrayCreateItem("Info")
    ;strich im menü
    TrayCreateItem("")
    $trayplay = TrayCreateItem("Play")
    TrayCreateItem("")
    $trayexit = TrayCreateItem("Exit")
    #EndRegion
    ;und wieder ein stop fürs endregion

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;visual auswählen
    choosevisual()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Nicksoft Media Player " & $version,500,400)
    ;Farbe
    GUISetBkColor(0x828AAC)

    [/autoit] [autoit][/autoit] [autoit]

    ; Musikdateien auflisten ; liste,kein edit (mehr),da keine direktwahl gemacht werden kann
    $list = GUICtrlCreateList("Nothing selected",5,10,150,350)
    $listmenu = GUICtrlCreateContextMenu($list)
    $listitem1 = GUICtrlCreateMenuItem("Play",$listmenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Menü
    $filemenu = GUICtrlCreateMenu("&File")
    $fileitem = GUICtrlCreateMenuItem("Open", $filemenu)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $saveitem = GUICtrlCreateMenuItem("Save", $filemenu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $infomenu = GUICtrlCreateMenu("?")
    $infoitem = GUICtrlCreateMenuItem("Info",$infomenu)
    $howtoplay1song = GUICtrlCreateMenuItem("Wie spiele ich Lieder direkt?",$infomenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Timer bis zum Herunterfahren von Windows
    $timermenu = GUICtrlCreateMenu("Timer")
    $timeritem = GUICtrlCreateMenuItem("Shutdowntimer",$timermenu)

    [/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Zufall oder Listenspielart wählbar
    $playoption = GUICtrlCreateMenu("Optionen")
    $randomitem = GUICtrlCreateMenuItem("Zufällig",$playoption)
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)
    $abcitem = GUICtrlCreateMenuItem("Alphabetisch",$playoption)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Statusbar
    ;Anzeige für aktuell spielendes Lied ist in der Statusbar !
    $statuslabel = GUICtrlCreateLabel("Ready" & $space,0,365,500,15,BitOR($SS_SIMPLE, $SS_SUNKEN))
    GUICtrlSetBkColor($statuslabel,0xE0DFE3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Start + Pause + Stop
    $start = GUICtrlCreateButton(">",165,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $pause = GUICtrlCreateButton(":",270,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $stop = GUICtrlCreateButton("Stop",375,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Visualisierung
    GUICtrlCreateGroup("Visual",165,25,320,200)
    $visual = GUICtrlCreateAvi($visualnumber,-1,180,50,150,150)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;volumen
    GUICtrlCreateGroup("Volumen",165,270,320,50)
    $volume = GUICtrlCreateSlider(170,285,300,25)
    ;färben
    GUICtrlSetBkColor(-1,0x828AAC)
    ;0-100 = 100% und saubere schritte
    GUICtrlSetLimit($volume,100,0)
    ;Default auf vollem Volumen
    GUICtrlSetData($volume,100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    $tray = TrayGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE ;wenn Fenster geschlossen wurde
    ;hinweis,dass der Tiomer nach schließen nichtmehr Funktioniert
    If $timer = 1 Then
    ;4 = yes & No,32 = Fragezeichen
    $msgbox = MsgBox(4 + 32,"NIcksoft Media Player schließen","Der Shutdowntimer wurde aktiviert !" & @crlf & "Wenn Sie den Player beenden, funktioniert diese Funktion nicht mehr !" & @crlf & @crlf & "Möchten Sie wirklich beenden?")
    ;wenn nein gedrückt wurde:
    If $msgbox = 7 Then
    ;zurückkehren
    ExitLoop
    EndIf
    EndIf
    Exit
    Case $msg = $fileitem
    open()
    openbuttons()
    Case $msg = $infoitem
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $msg = $howtoplay1song
    MsgBox(0,"Wie spiele ich einen einzelnen Song aus der Playlist?","Markiere mit der Maus ein Lied und " & @crlf & "öffne dann das Kontextmenü. (Rechtsklick)")
    Case $msg = $start
    start()
    Case $msg = $pause
    pause()
    Case $msg = $stop
    stop()
    Case $msg = $timeritem
    $zeitexample = @HOUR & ":" & @MIN
    $zeit = InputBox("Shutdowntimer","Mit dieser Funktion kann sich ihr Windows um eine bestimmte Zeit herunterfahren." & @crlf & "Es ist zur Zeit : " & $zeitexample & @crlf & "Nach diesem Muster geben Sie bitte die Zieluhrzeit ein:","","",300,200)
    GUICtrlSetState($timeritem, $GUI_CHECKED)
    If @error Then ContinueLoop
    $timer = 1
    Case $msg = $listitem1
    contextlist()
    Case $msg = $saveitem
    playlistspeichern()
    Case $msg = $abcitem ;auf liste umgestellt
    changetolist()
    Case $msg = $randomitem
    changetorandom()

    Case $tray = $trayinfo
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $tray = $trayplay
    open()
    openbuttons()
    Case $tray = $trayexit
    Exit

    Case Else
    volume()
    If $timer = 1 Then
    If @hour & ":" & @MIN = $zeit Then
    Shutdown(5)
    Exit
    EndIf
    EndIf
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; FUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; - GUIFUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func open()
    ;Datei aussuchen, mehrfachauswahl
    $fileselect = FileOpenDialog("Choose Music",@Desktopdir,"Music & NMP-Playlist (*.mp3;*.wma;*.wav;*.nmp)",1 + 4)
    ;wenn abgebrochen wurde:
    If @error Then Return


    ;gucken ob Playlist
    $look1 = StringInStr($fileselect,".nmp")
    If $look1 > 1 Then
    ;Datei an Playlistort kopieren & zurückbennen
    FileCopy($fileselect,@Tempdir & "\soundfiles.txt")
    ;warten bis fertig kopiert
    Do
    Sleep(100)
    Until FileExists(@Tempdir & "\soundfiles.txt")
    ;schleife um alle Einträge in die Liste einzutragen
    ;-------
    $loopsearch = 2
    ;-------/
    Do
    $read = FileReadLine(@Tempdir & "\soundfiles.txt",$loopsearch)
    If @error Then ExitLoop
    If $read = "" Then ExitLoop
    GUICtrlSetData($list,$read)
    $loopsearch = $loopsearch + 1
    Until @error
    start()
    Else
    ;gucken ob nur einzelauswahl
    $look = StringInStr($fileselect,"|")
    If $look > 1 Then
    ;mehrfachauswahl zurecht stutzen
    #Region imported
    $durchsuchen1 = StringReplace($fileselect, "|", @CRLF)
    FileWriteLine(@Tempdir & "\search.tmp",$durchsuchen1)
    ;-------
    $loopsearch = 2
    ;-------/
    $read1stlinesearch = FileReadLine(@Tempdir & "\search.tmp",1)
    Do
    $readxlinesearch = FileReadLine(@Tempdir & "\search.tmp",$loopsearch)
    $err = @error
    $loopsearch = $loopsearch + 1
    If $readxlinesearch = "" Then
    FileDelete(@Tempdir & "\search.tmp")
    ExitLoop
    EndIf
    GUICtrlSetData($list,$readxlinesearch,-1)
    FileWriteLine(@Tempdir & "\soundfiles.txt",$read1stlinesearch & "\" & $readxlinesearch & @CRLF) ;da z.Zeit liste,kein edit ist,wird playlist gespeichert
    Until $err = -1
    #EndRegion
    start()
    Else
    $onesound = 1
    ;bisherige Musik stoppen
    _SoundClose($openedsoundfile)
    AdlibDisable()
    ;neue Datei öffnen & abspielen
    $openedsoundfile = _SoundOpen($fileselect)
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;datei auf edit setzen
    GUICtrlSetData($list,$fileselect)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lied in statusbar schreiben
    status($fileselect)
    ;markieren als besonderes event
    $onesound = 1
    EndIf

    ;playlist speichern jetzt möglich machen
    GUICtrlSetState($saveitem,$GUI_ENABLE)
    Endif

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;alle knöpfe freischalten
    Func openbuttons()
    GUICtrlSetState($pause, $GUI_ENABLE)
    ;bis stoptaste wieder funktioniert wird sie deaktiviert
    GUICtrlSetState($stop, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn der startknopf gedrückt wurde....
    Func start()
    ;startknopf wieder deaktivieren
    GUICtrlSetState($start, $GUI_DISABLE)

    ;falls aus einer pause gestartet wurde -> forfahren
    If $paused = 1 Then
    $paused = 0
    fortfahren()
    Return
    EndIf

    ;Wieviele Lieder sind in in der Playlist gespeichert ? (1 Linie = 1 Pfad zu 1 Lied)
    Countlines()

    [/autoit] [autoit][/autoit] [autoit]

    ;maximale Anzahl der Lieder speichern für zufallsauswahl
    RegWrite("HKEY_CURRENT_USER\Software\NMW","lines","REG_SZ",$loop)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lieder abspielen starten
    If $optionplay = 1 Then
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn pause gedrückt wurde
    Func pause()
    ;sound nicht mehr abspielen
    AdlibDisable()
    _SoundPause($openedsoundfile)
    ;merken -> nur pause
    $paused = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;in statusbar eintragen
    status("paused")
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func stop()
    ;abspielen beenden
    AdlibDisable()
    _SoundClose($openedsoundfile)
    ;in der statusbar als gestoppt anzeigen
    status("stopped" & $space)
    ;merken -> nur stop
    Global $stopped = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    ;in trayicon anzeigen
    TraySetToolTip("Gestoppt")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func contextlist()
    ;markierten eintrag auslesen
    $read = GUICtrlRead($list)
    ;falls kein Lied ausgewählt wurde
    If $read = "Nothing selected" Or "" Then
    MsgBox(0,"Nicksoft Media Player","Bitte wählen Sie ein Musiktitel aus!")
    Return
    EndIf
    ;sound stoppen
    _SoundStop($openedsoundfile)
    ;ausgelesenes öffnen
    $openedsoundfile = _SoundOpen($read)
    ;ausgelesenes starten
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;zur weiterverarbeitung den Eintrag in der Playlist suchen und Zeile speichern
    $detectline = 1
    Do
    $readcontext = FileReadLine(@Tempdir & "\soundfiles.txt",$detectline)
    $stringstr = StringInStr($readcontext,$read)
    $detectline = $detectline + 1
    Until $stringstr > 1
    ;für alphabet-abspielung speichern
    $aktuelleslied = $detectline

    ;statusbar eintragen
    status($readcontext)
    ;danach soll ja weitergemacht werden ! :

    ;erst bisheriges stoppen (falls es schon lief)
    AdlibDisable()
    If $optionplay = 1 Then
    ;dann neustarten
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func playlistspeichern()
    ;speicherort auswählen lassen
    $saveplaylist = FileSaveDialog("Playlist speichern",@Desktopdir,"NMP-Playlist (*.nmp)")
    ;wenn abgebrochen wurde zurückkehren
    If @error Then Return
    FileCopy(@Tempdir & "\soundfiles.txt",$saveplaylist & ".nmp",1)
    ;playlist speichern jetzt nichtmehr möglich machen
    GUICtrlSetState($saveitem,$GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetolist()

    $optionplay = 2

    ;option random wieder einblenden
    GUICtrlSetState($randomitem, $GUI_UNCHECKED)
    GUICtrlSetState($randomitem, $GUI_ENABLE)

    ;option ausblenden
    GUICtrlSetState($abcitem, $GUI_CHECKED)
    GUICtrlSetState($abcitem, $GUI_DISABLE)


    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetorandom()

    $optionplay = 1

    ;option list wieder einblenden
    GUICtrlSetState($abcitem, $GUI_UNCHECKED)
    GUICtrlSetState($abcitem, $GUI_ENABLE)

    ;option ausblenden
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; -andere Funktionen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;schnell statusbar beschreiben
    Func status($titel)
    GUICtrlSetData($statuslabel,$titel & $space) ;$space um statusbar immer grau zu hinterlegen
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um zu sehen,ob noch eine Datei gespielt wird (wenn nötig nächstes stück laden)
    Func playsound()
    ;wenn option geändert wurde
    If $optionplay <> 1 Then
    AdlibDisable()
    AdlibEnable("playsoundlist")
    EndIf

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)
    If not FileExists(@Tempdir & "\soundfiles.txt") And $onesound = 0 Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then
    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;zufallslinie auswählen von 1 bis zu der letzten zeile (registry ausgelesen)
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    If $onesound = 1 Then ExitLoop
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ElseIf $status = "stopped" Then
    ;da zur Zeit Fehler unbekannt neue Art=
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    $readsoundplay
    Else
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;dann fahre fort
    ExitLoop
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wird aufgerufen,falls nichts gedrückt wurde (Konflikt mit Adlib funktion playsound)
    Func volume()
    ;slider auslesen
    $read = GUICtrlRead($volume)
    ;wert einstellen
    SoundSetWaveVolume($read)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    ;Registrywerte löschen
    RegDelete("HKEY_CURRENT_USER\Software\NMW")
    ;lied beenden
    _SoundClose($openedsoundfile)
    ;playlist löschen (wichtig)
    FileDelete(@Tempdir & "\soundfiles.txt")

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wenn lied als gepaust gemerkt wurde:
    Func fortfahren()
    ;mit lied fortfahren
    _SoundResume($openedsoundfile)
    ;falls nur eine musikdatei gespielt wird,gibt es (logischerweise) keine Playlist !
    If $onesound = 1 Then
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf
    status($readsoundplay)
    ;visual aktivieren
    GUICtrlSetState($visual,1)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;linien der Playlist zählen:
    Func Countlines()
    ;initialisiere zählen
    $countlines1 = 1
    ;schleife:
    Do
    ;x.-te Zeile auslesen
    FileReadLine(@Tempdir & "\soundfiles.txt",$countlines1)
    ;errormarkierung speichern (da sonst verfällt)
    $err = @error
    ;variable raufzählen
    $countlines1 = $countlines1 + 1
    ;schleife bis @error = -1 (Dateiende)
    Until $err = -1 Or $countlines1 > 1000
    ;endergebnis speichern
    $loop = $countlines1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;zufallsvisual auswählen & in variable speichern
    Func choosevisual()

    $result = Round(Random(1,4))
    $visualnumber = "visual.avi"

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um nach liste zu spielen (unterschied zu dem zufallsabspielen)
    Func playsoundlist()

    ;wenn option geändert wurde
    If $optionplay <> 2 Then
    AdlibDisable()
    AdlibEnable("playsound")
    EndIf

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)

    If not FileExists(@Tempdir & "\soundfiles.txt") And $onesound = 0 Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then

    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;aus der playlist die nächste zeile auswähen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;für nächsten start nachsehen
    $aktuelleslied = $aktuelleslied + 1
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ;wenn die position des liedes = maximallänge ist:
    ElseIf $status = "stopped" Then
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;wenn das letzte lied gespielt wurde :
    If @error Then
    MsgBox(64,"Playlist beendet","Playlist ist nun einmal durchgelaufen!")
    Return
    EndIf
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]


    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Version 1.8.2
    Bug beim Abspielen per Rechtsklick gefixxt.

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Res_LegalCopyright Nicolas Giese
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <array.au3>
    #include <Sound.au3>
    #include <EditConstants.au3>
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Spuren löschen
    Opt("OnExitFunc","OnExit")
    ;um das standart traymenü wegzubekommen
    Opt("TrayAutoPause",0)
    Opt("TrayMenuMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Debugging,meist deaktiviert
    Opt("TrayIconDebug",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;playlist löschen (wichtig,falls abgebrochen gestartet wurde)
    FileDelete(@Tempdir & "\soundfiles.txt")

    [/autoit] [autoit][/autoit] [autoit]

    #Region Variable
    $space = " "
    ;gebraucht um die gesamte Statusbar grau zu färben

    [/autoit] [autoit][/autoit] [autoit]

    $loop1 = 0
    $readnumber = 1
    Global $readsoundplay
    Global $openedsoundfile
    Global $paused = 0
    Global $stopped = 0
    Global $loop
    Global $timer = 0
    Global $onesound = 0
    Global $visualnumber
    Global $lastsong = "firstplay"
    Global $optionplay = 1 ;1 = Zufall, 2 = Alphabetisch/Liste
    Global $aktuelleslied = 1

    [/autoit] [autoit][/autoit] [autoit]

    $version = "1.8.2"

    [/autoit] [autoit][/autoit] [autoit]

    ;um da verschiedene Werte zu speichern
    RegWrite("HKEY_CURRENT_USER\Software\NMW")

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion
    ;region ,du darfst nicht weiter nach unten ;)

    [/autoit] [autoit][/autoit] [autoit]

    ;traytooltip default setzen (bis zum starten der musik)
    TraySetToolTip("Nicksoft Media Player " & $version & @crlf & "Warten auf Musik...")

    [/autoit] [autoit][/autoit] [autoit]

    ;Traymenü erstellen für bessere Handlichkeit
    #Region CreateTray
    $trayinfo = TrayCreateItem("Info")
    ;strich im menü
    TrayCreateItem("")
    $trayplay = TrayCreateItem("Play")
    TrayCreateItem("")
    $trayexit = TrayCreateItem("Exit")
    #EndRegion
    ;und wieder ein stop fürs endregion

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;visual auswählen
    choosevisual()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Nicksoft Media Player " & $version,500,400)
    ;Farbe
    GUISetBkColor(0x828AAC)

    [/autoit] [autoit][/autoit] [autoit]

    ; Musikdateien auflisten ; liste,kein edit (mehr),da keine direktwahl gemacht werden kann
    $list = GUICtrlCreateList("Nothing selected",5,10,150,350)
    $listmenu = GUICtrlCreateContextMenu($list)
    $listitem1 = GUICtrlCreateMenuItem("Play",$listmenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Menü
    $filemenu = GUICtrlCreateMenu("&File")
    $fileitem = GUICtrlCreateMenuItem("Open", $filemenu)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $saveitem = GUICtrlCreateMenuItem("Save", $filemenu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $infomenu = GUICtrlCreateMenu("?")
    $infoitem = GUICtrlCreateMenuItem("Info",$infomenu)
    $howtoplay1song = GUICtrlCreateMenuItem("Wie spiele ich Lieder direkt?",$infomenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Timer bis zum Herunterfahren von Windows
    $timermenu = GUICtrlCreateMenu("Timer")
    $timeritem = GUICtrlCreateMenuItem("Shutdowntimer",$timermenu)

    [/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Zufall oder Listenspielart wählbar
    $playoption = GUICtrlCreateMenu("Optionen")
    $randomitem = GUICtrlCreateMenuItem("Zufällig",$playoption)
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)
    $abcitem = GUICtrlCreateMenuItem("Alphabetisch",$playoption)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Statusbar
    ;Anzeige für aktuell spielendes Lied ist in der Statusbar !
    $statuslabel = GUICtrlCreateLabel("Ready" & $space,0,365,500,15,BitOR($SS_SIMPLE, $SS_SUNKEN))
    GUICtrlSetBkColor($statuslabel,0xE0DFE3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Start + Pause + Stop
    $start = GUICtrlCreateButton(">",165,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $pause = GUICtrlCreateButton(":",270,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $stop = GUICtrlCreateButton("Stop",375,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Visualisierung
    GUICtrlCreateGroup("Visual",165,25,320,200)
    $visual = GUICtrlCreateAvi($visualnumber,-1,180,50,150,150)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;volumen
    GUICtrlCreateGroup("Volumen",165,270,320,50)
    $volume = GUICtrlCreateSlider(170,285,300,25)
    ;färben
    GUICtrlSetBkColor(-1,0x828AAC)
    ;0-100 = 100% und saubere schritte
    GUICtrlSetLimit($volume,100,0)
    ;Default auf vollem Volumen
    GUICtrlSetData($volume,100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    $tray = TrayGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE ;wenn Fenster geschlossen wurde
    ;hinweis,dass der Tiomer nach schließen nichtmehr Funktioniert
    If $timer = 1 Then
    ;4 = yes & No,32 = Fragezeichen
    $msgbox = MsgBox(4 + 32,"NIcksoft Media Player schließen","Der Shutdowntimer wurde aktiviert !" & @crlf & "Wenn Sie den Player beenden, funktioniert diese Funktion nicht mehr !" & @crlf & @crlf & "Möchten Sie wirklich beenden?")
    ;wenn nein gedrückt wurde:
    If $msgbox = 7 Then
    ;zurückkehren
    ExitLoop
    EndIf
    EndIf
    Exit
    Case $msg = $fileitem
    open()
    openbuttons()
    Case $msg = $infoitem
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $msg = $howtoplay1song
    MsgBox(0,"Wie spiele ich einen einzelnen Song aus der Playlist?","Markiere mit der Maus ein Lied und " & @crlf & "öffne dann das Kontextmenü. (Rechtsklick)")
    Case $msg = $start
    start()
    Case $msg = $pause
    pause()
    Case $msg = $stop
    stop()
    Case $msg = $timeritem
    $zeitexample = @HOUR & ":" & @MIN
    $zeit = InputBox("Shutdowntimer","Mit dieser Funktion kann sich ihr Windows um eine bestimmte Zeit herunterfahren." & @crlf & "Es ist zur Zeit : " & $zeitexample & @crlf & "Nach diesem Muster geben Sie bitte die Zieluhrzeit ein:","","",300,200)
    GUICtrlSetState($timeritem, $GUI_CHECKED)
    If @error Then ContinueLoop
    $timer = 1
    Case $msg = $listitem1
    contextlist()
    Case $msg = $saveitem
    playlistspeichern()
    Case $msg = $abcitem ;auf liste umgestellt
    changetolist()
    Case $msg = $randomitem
    changetorandom()

    Case $tray = $trayinfo
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $tray = $trayplay
    open()
    openbuttons()
    Case $tray = $trayexit
    Exit

    Case Else
    volume()
    If $timer = 1 Then
    If @hour & ":" & @MIN = $zeit Then
    Shutdown(5)
    Exit
    EndIf
    EndIf
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; FUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; - GUIFUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func open()
    ;Datei aussuchen, mehrfachauswahl
    $fileselect = FileOpenDialog("Choose Music",@Desktopdir,"Music & NMP-Playlist (*.mp3;*.wma;*.wav;*.nmp)",1 + 4)
    ;wenn abgebrochen wurde:
    If @error Then Return


    ;gucken ob Playlist
    $look1 = StringInStr($fileselect,".nmp")
    If $look1 > 1 Then
    ;Datei an Playlistort kopieren & zurückbennen
    FileCopy($fileselect,@Tempdir & "\soundfiles.txt")
    ;warten bis fertig kopiert
    Do
    Sleep(100)
    Until FileExists(@Tempdir & "\soundfiles.txt")
    ;schleife um alle Einträge in die Liste einzutragen
    ;-------
    $loopsearch = 2
    ;-------/
    Do
    $read = FileReadLine(@Tempdir & "\soundfiles.txt",$loopsearch)
    If @error Then ExitLoop
    If $read = "" Then ExitLoop
    GUICtrlSetData($list,$read)
    $loopsearch = $loopsearch + 1
    Until @error
    start()
    Else
    ;gucken ob nur einzelauswahl
    $look = StringInStr($fileselect,"|")
    If $look > 1 Then
    ;mehrfachauswahl zurecht stutzen
    #Region imported
    $durchsuchen1 = StringReplace($fileselect, "|", @CRLF)
    FileWriteLine(@Tempdir & "\search.tmp",$durchsuchen1)
    ;-------
    $loopsearch = 2
    ;-------/
    $read1stlinesearch = FileReadLine(@Tempdir & "\search.tmp",1)
    Do
    $readxlinesearch = FileReadLine(@Tempdir & "\search.tmp",$loopsearch)
    $err = @error
    $loopsearch = $loopsearch + 1
    If $readxlinesearch = "" Then
    FileDelete(@Tempdir & "\search.tmp")
    ExitLoop
    EndIf
    GUICtrlSetData($list,$readxlinesearch,-1)
    FileWriteLine(@Tempdir & "\soundfiles.txt",$read1stlinesearch & "\" & $readxlinesearch & @CRLF) ;da z.Zeit liste,kein edit ist,wird playlist gespeichert
    Until $err = -1
    #EndRegion
    start()
    Else
    $onesound = 1
    ;bisherige Musik stoppen
    _SoundClose($openedsoundfile)
    AdlibDisable()
    ;neue Datei öffnen & abspielen
    $openedsoundfile = _SoundOpen($fileselect)
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;datei auf edit setzen
    GUICtrlSetData($list,$fileselect)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lied in statusbar schreiben
    status($fileselect)
    ;markieren als besonderes event
    $onesound = 1
    EndIf

    ;playlist speichern jetzt möglich machen
    GUICtrlSetState($saveitem,$GUI_ENABLE)
    Endif

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;alle knöpfe freischalten
    Func openbuttons()
    GUICtrlSetState($pause, $GUI_ENABLE)
    ;bis stoptaste wieder funktioniert wird sie deaktiviert
    GUICtrlSetState($stop, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn der startknopf gedrückt wurde....
    Func start()
    ;startknopf wieder deaktivieren
    GUICtrlSetState($start, $GUI_DISABLE)

    ;falls aus einer pause gestartet wurde -> forfahren
    If $paused = 1 Then
    $paused = 0
    fortfahren()
    Return
    EndIf

    ;Wieviele Lieder sind in in der Playlist gespeichert ? (1 Linie = 1 Pfad zu 1 Lied)
    Countlines()

    [/autoit] [autoit][/autoit] [autoit]

    ;maximale Anzahl der Lieder speichern für zufallsauswahl
    RegWrite("HKEY_CURRENT_USER\Software\NMW","lines","REG_SZ",$loop)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lieder abspielen starten
    If $optionplay = 1 Then
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn pause gedrückt wurde
    Func pause()
    ;sound nicht mehr abspielen
    AdlibDisable()
    _SoundPause($openedsoundfile)
    ;merken -> nur pause
    $paused = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;in statusbar eintragen
    status("paused")
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func stop()
    ;abspielen beenden
    AdlibDisable()
    _SoundClose($openedsoundfile)
    ;in der statusbar als gestoppt anzeigen
    status("stopped" & $space)
    ;merken -> nur stop
    Global $stopped = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    ;in trayicon anzeigen
    TraySetToolTip("Gestoppt")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func contextlist()
    ;markierten eintrag auslesen
    $read = GUICtrlRead($list)
    ;falls kein Lied ausgewählt wurde
    If $read = "Nothing selected" Or "" Then
    MsgBox(0,"Nicksoft Media Player","Bitte wählen Sie ein Musiktitel aus!")
    Return
    EndIf
    ;sound stoppen
    _SoundClose($openedsoundfile)
    ;ausgelesenes öffnen
    $openedsoundfile = _SoundOpen($read)
    ;ausgelesenes starten
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;zur weiterverarbeitung den Eintrag in der Playlist suchen und Zeile speichern
    $detectline = 1
    Do
    $readcontext = FileReadLine(@Tempdir & "\soundfiles.txt",$detectline)
    $stringstr = StringInStr($readcontext,$read)
    $detectline = $detectline + 1
    Until $stringstr > 1
    ;für alphabet-abspielung speichern
    $aktuelleslied = $detectline

    ;statusbar eintragen
    status($readcontext)
    ;danach soll ja weitergemacht werden ! :

    ;erst bisheriges stoppen (falls es schon lief)
    AdlibDisable()
    If $optionplay = 1 Then
    ;dann neustarten
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func playlistspeichern()
    ;speicherort auswählen lassen
    $saveplaylist = FileSaveDialog("Playlist speichern",@Desktopdir,"NMP-Playlist (*.nmp)")
    ;wenn abgebrochen wurde zurückkehren
    If @error Then Return
    FileCopy(@Tempdir & "\soundfiles.txt",$saveplaylist & ".nmp",1)
    ;playlist speichern jetzt nichtmehr möglich machen
    GUICtrlSetState($saveitem,$GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetolist()

    $optionplay = 2

    ;option random wieder einblenden
    GUICtrlSetState($randomitem, $GUI_UNCHECKED)
    GUICtrlSetState($randomitem, $GUI_ENABLE)

    ;option ausblenden
    GUICtrlSetState($abcitem, $GUI_CHECKED)
    GUICtrlSetState($abcitem, $GUI_DISABLE)


    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetorandom()

    $optionplay = 1

    ;option list wieder einblenden
    GUICtrlSetState($abcitem, $GUI_UNCHECKED)
    GUICtrlSetState($abcitem, $GUI_ENABLE)

    ;option ausblenden
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; -andere Funktionen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;schnell statusbar beschreiben
    Func status($titel)
    GUICtrlSetData($statuslabel,$titel & $space) ;$space um statusbar immer grau zu hinterlegen
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um zu sehen,ob noch eine Datei gespielt wird (wenn nötig nächstes stück laden)
    Func playsound()
    ;wenn option geändert wurde
    If $optionplay <> 1 Then
    AdlibDisable()
    AdlibEnable("playsoundlist")
    EndIf

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)
    If not FileExists(@Tempdir & "\soundfiles.txt") And $onesound = 0 Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then
    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;zufallslinie auswählen von 1 bis zu der letzten zeile (registry ausgelesen)
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    If $onesound = 1 Then ExitLoop
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ElseIf $status = "stopped" Then
    ;da zur Zeit Fehler unbekannt neue Art=
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    $readsoundplay
    Else
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;dann fahre fort
    ExitLoop
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wird aufgerufen,falls nichts gedrückt wurde (Konflikt mit Adlib funktion playsound)
    Func volume()
    ;slider auslesen
    $read = GUICtrlRead($volume)
    ;wert einstellen
    SoundSetWaveVolume($read)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    ;Registrywerte löschen
    RegDelete("HKEY_CURRENT_USER\Software\NMW")
    ;lied beenden
    _SoundClose($openedsoundfile)
    ;playlist löschen (wichtig)
    FileDelete(@Tempdir & "\soundfiles.txt")

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wenn lied als gepaust gemerkt wurde:
    Func fortfahren()
    ;mit lied fortfahren
    _SoundResume($openedsoundfile)
    ;falls nur eine musikdatei gespielt wird,gibt es (logischerweise) keine Playlist !
    If $onesound = 1 Then
    AdlibEnable("playsound")
    Else
    AdlibEnable("playsoundlist")
    EndIf
    status($readsoundplay)
    ;visual aktivieren
    GUICtrlSetState($visual,1)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;linien der Playlist zählen:
    Func Countlines()
    ;initialisiere zählen
    $countlines1 = 1
    ;schleife:
    Do
    ;x.-te Zeile auslesen
    FileReadLine(@Tempdir & "\soundfiles.txt",$countlines1)
    ;errormarkierung speichern (da sonst verfällt)
    $err = @error
    ;variable raufzählen
    $countlines1 = $countlines1 + 1
    ;schleife bis @error = -1 (Dateiende)
    Until $err = -1 Or $countlines1 > 1000
    ;endergebnis speichern
    $loop = $countlines1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;zufallsvisual auswählen & in variable speichern
    Func choosevisual()

    $result = Round(Random(1,4))
    $visualnumber = "visual.avi"

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um nach liste zu spielen (unterschied zu dem zufallsabspielen)
    Func playsoundlist()

    ;wenn option geändert wurde
    If $optionplay <> 2 Then
    AdlibDisable()
    AdlibEnable("playsound")
    EndIf

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)

    If not FileExists(@Tempdir & "\soundfiles.txt") And $onesound = 0 Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then

    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;aus der playlist die nächste zeile auswähen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;für nächsten start nachsehen
    $aktuelleslied = $aktuelleslied + 1
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ;wenn die position des liedes = maximallänge ist:
    ElseIf $status = "stopped" Then
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;wenn das letzte lied gespielt wurde :
    If @error Then
    MsgBox(64,"Playlist beendet","Playlist ist nun einmal durchgelaufen!")
    Return
    EndIf
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]


    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • ist gut aber ich finde ein media player ohne Drag and Drop funktion ist nicht zu gebrauchen

  • das script is erstma sehr gut, aber ich habe noch zwei bugs gefunden:
    Wenn man pausiert und dann wieder apspielt, kann man nicht noch einmal pausieren und auch nicht stoppen und
    wenn man ein mal gestoppt hat kann man nicht mehr abspielen.

  • Ganz nice eigentlich aber nochn Bug:

    Ich hab einfach Open und dann hab ich ein paar Songs makiert und auf "Öffnen"
    Hatt alles wunderbar geklappt aber dannw urden auf einmal 2 Liede rgleichzeitig abgespielt O.o.
    Hat sich zimlich krank angehört xD. Hab kein Plan wieso er des plötzlich gemacht hat. Und als ich auf Stopp gegangen bin hat er nur ein Lied gestoppt und des andere konnte ich netmehr stoppen :D

  • ich war mal so frei und habe befehle von der main.au3 aktualisiert, damit man dieses script auch als vorlage verwenden kann ;)

    Neues Main.au3 Script
    [autoit]

    #AutoIt3Wrapper_Res_LegalCopyright Nicolas Giese
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <array.au3>
    #include <Sound.au3>
    #include <EditConstants.au3>
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Spuren löschen
    Opt("OnExitFunc","OnExit")
    ;um das standart traymenü wegzubekommen
    Opt("TrayAutoPause",0)
    Opt("TrayMenuMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Debugging,meist deaktiviert
    Opt("TrayIconDebug",1)

    [/autoit] [autoit][/autoit] [autoit]

    ;playlist löschen (wichtig,falls abgebrochen gestartet wurde)
    FileDelete(@Tempdir & "\soundfiles.txt")

    [/autoit] [autoit][/autoit] [autoit]

    #Region Variable
    $space = " "
    ;gebraucht um die gesamte Statusbar grau zu färben

    [/autoit] [autoit][/autoit] [autoit]

    $loop1 = 0
    $readnumber = 1
    Global $readsoundplay
    Global $openedsoundfile
    Global $paused = 0
    Global $stopped = 0
    Global $loop
    Global $timer = 0
    Global $onesound = 0
    Global $visualnumber
    Global $lastsong = "firstplay"
    Global $optionplay = 1 ;1 = Zufall, 2 = Alphabetisch/Liste
    Global $aktuelleslied = 1

    [/autoit] [autoit][/autoit] [autoit]

    $version = "1.8.2"

    [/autoit] [autoit][/autoit] [autoit]

    ;um da verschiedene Werte zu speichern
    RegWrite("HKEY_CURRENT_USER\Software\NMW")

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion
    ;region ,du darfst nicht weiter nach unten ;)

    [/autoit] [autoit][/autoit] [autoit]

    ;traytooltip default setzen (bis zum starten der musik)
    TraySetToolTip("Nicksoft Media Player " & $version & @crlf & "Warten auf Musik...")

    [/autoit] [autoit][/autoit] [autoit]

    ;Traymenü erstellen für bessere Handlichkeit
    #Region CreateTray
    $trayinfo = TrayCreateItem("Info")
    ;strich im menü
    TrayCreateItem("")
    $trayplay = TrayCreateItem("Play")
    TrayCreateItem("")
    $trayexit = TrayCreateItem("Exit")
    #EndRegion
    ;und wieder ein stop fürs endregion

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;visual auswählen
    choosevisual()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Nicksoft Media Player " & $version,500,400)
    ;Farbe
    GUISetBkColor(0x828AAC)

    [/autoit] [autoit][/autoit] [autoit]

    ; Musikdateien auflisten ; liste,kein edit (mehr),da keine direktwahl gemacht werden kann
    $list = GUICtrlCreateList("Nothing selected",5,10,150,350)
    $listmenu = GUICtrlCreateContextMenu($list)
    $listitem1 = GUICtrlCreateMenuItem("Play",$listmenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Menü
    $filemenu = GUICtrlCreateMenu("&File")
    $fileitem = GUICtrlCreateMenuItem("Open", $filemenu)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $saveitem = GUICtrlCreateMenuItem("Save", $filemenu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $infomenu = GUICtrlCreateMenu("?")
    $infoitem = GUICtrlCreateMenuItem("Info",$infomenu)
    $howtoplay1song = GUICtrlCreateMenuItem("Wie spiele ich Lieder direkt?",$infomenu)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Timer bis zum Herunterfahren von Windows
    $timermenu = GUICtrlCreateMenu("Timer")
    $timeritem = GUICtrlCreateMenuItem("Shutdowntimer",$timermenu)

    [/autoit] [autoit][/autoit] [autoit]

    ;NEU -> Zufall oder Listenspielart wählbar
    $playoption = GUICtrlCreateMenu("Optionen")
    $randomitem = GUICtrlCreateMenuItem("Zufällig",$playoption)
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)
    $abcitem = GUICtrlCreateMenuItem("Alphabetisch",$playoption)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Statusbar
    ;Anzeige für aktuell spielendes Lied ist in der Statusbar !
    $statuslabel = GUICtrlCreateLabel("Ready" & $space,0,365,500,15,BitOR($SS_SIMPLE, $SS_SUNKEN))
    GUICtrlSetBkColor($statuslabel,0xE0DFE3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Start + Pause + Stop
    $start = GUICtrlCreateButton(">",165,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $pause = GUICtrlCreateButton(":",270,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $stop = GUICtrlCreateButton("Stop",375,330,100,25)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Visualisierung
    GUICtrlCreateGroup("Visual",165,25,320,200)
    $visual = GUICtrlCreateAvi($visualnumber,-1,180,50,150,150)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;volumen
    GUICtrlCreateGroup("Volumen",165,270,320,50)
    $volume = GUICtrlCreateSlider(170,285,300,25)
    ;färben
    GUICtrlSetBkColor(-1,0x828AAC)
    ;0-100 = 100% und saubere schritte
    GUICtrlSetLimit($volume,100,0)
    ;Default auf vollem Volumen
    GUICtrlSetData($volume,100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    $tray = TrayGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE ;wenn Fenster geschlossen wurde
    ;hinweis,dass der Tiomer nach schließen nichtmehr Funktioniert
    If $timer = 1 Then
    ;4 = yes & No,32 = Fragezeichen
    $msgbox = MsgBox(4 + 32,"NIcksoft Media Player schließen","Der Shutdowntimer wurde aktiviert !" & @crlf & "Wenn Sie den Player beenden, funktioniert diese Funktion nicht mehr !" & @crlf & @crlf & "Möchten Sie wirklich beenden?")
    ;wenn nein gedrückt wurde:
    If $msgbox = 7 Then
    ;zurückkehren
    ExitLoop
    EndIf
    EndIf
    Exit
    Case $msg = $fileitem
    open()
    openbuttons()
    Case $msg = $infoitem
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $msg = $howtoplay1song
    MsgBox(0,"Wie spiele ich einen einzelnen Song aus der Playlist?","Markiere mit der Maus ein Lied und " & @crlf & "öffne dann das Kontextmenü. (Rechtsklick)")
    Case $msg = $start
    start()
    Case $msg = $pause
    pause()
    Case $msg = $stop
    stop()
    Case $msg = $timeritem
    $zeitexample = @HOUR & ":" & @MIN
    $zeit = InputBox("Shutdowntimer","Mit dieser Funktion kann sich ihr Windows um eine bestimmte Zeit herunterfahren." & @crlf & "Es ist zur Zeit : " & $zeitexample & @crlf & "Nach diesem Muster geben Sie bitte die Zieluhrzeit ein:","","",300,200)
    GUICtrlSetState($timeritem, $GUI_CHECKED)
    If @error Then ContinueLoop
    $timer = 1
    Case $msg = $listitem1
    contextlist()
    Case $msg = $saveitem
    playlistspeichern()
    Case $msg = $abcitem ;auf liste umgestellt
    changetolist()
    Case $msg = $randomitem
    changetorandom()

    [/autoit] [autoit][/autoit] [autoit]

    Case $tray = $trayinfo
    MsgBox(0,"Info","Von Nicksoft (2008)" & @crlf & "Version: " & $version )
    Case $tray = $trayplay
    open()
    openbuttons()
    Case $tray = $trayexit
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case Else
    volume()
    If $timer = 1 Then
    If @hour & ":" & @MIN = $zeit Then
    Shutdown(5)
    Exit
    EndIf
    EndIf
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; FUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; - GUIFUNKTIONEN

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func open()
    ;Datei aussuchen, mehrfachauswahl
    $fileselect = FileOpenDialog("Choose Music",@Desktopdir,"Music & NMP-Playlist (*.mp3;*.wma;*.wav;*.nmp)",1 + 4)
    ;wenn abgebrochen wurde:
    If @error Then Return

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;gucken ob Playlist
    $look1 = StringInStr($fileselect,".nmp")
    If $look1 > 1 Then
    ;Datei an Playlistort kopieren & zurückbennen
    FileCopy($fileselect,@Tempdir & "\soundfiles.txt")
    ;warten bis fertig kopiert
    Do
    Sleep(100)
    Until FileExists(@Tempdir & "\soundfiles.txt")
    ;schleife um alle Einträge in die Liste einzutragen
    ;-------
    $loopsearch = 2
    ;-------/
    Do
    $read = FileReadLine(@Tempdir & "\soundfiles.txt",$loopsearch)
    If @error Then ExitLoop
    If $read = "" Then ExitLoop
    GUICtrlSetData($list,$read)
    $loopsearch = $loopsearch + 1
    Until @error
    start()
    Else
    ;gucken ob nur einzelauswahl
    $look = StringInStr($fileselect,"|")
    If $look > 1 Then
    ;mehrfachauswahl zurecht stutzen
    #Region imported
    $durchsuchen1 = StringReplace($fileselect, "|", @CRLF)
    FileWriteLine(@Tempdir & "\search.tmp",$durchsuchen1)
    ;-------
    $loopsearch = 2
    ;-------/
    $read1stlinesearch = FileReadLine(@Tempdir & "\search.tmp",1)
    Do
    $readxlinesearch = FileReadLine(@Tempdir & "\search.tmp",$loopsearch)
    $err = @error
    $loopsearch = $loopsearch + 1
    If $readxlinesearch = "" Then
    FileDelete(@Tempdir & "\search.tmp")
    ExitLoop
    EndIf
    GUICtrlSetData($list,$readxlinesearch,-1)
    FileWriteLine(@Tempdir & "\soundfiles.txt",$read1stlinesearch & "\" & $readxlinesearch & @CRLF) ;da z.Zeit liste,kein edit ist,wird playlist gespeichert
    Until $err = -1
    #EndRegion
    start()
    Else
    $onesound = 1
    ;bisherige Musik stoppen
    _SoundClose($openedsoundfile)
    AdlibUnRegister()
    ;neue Datei öffnen & abspielen
    $openedsoundfile = _SoundOpen($fileselect)
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;datei auf edit setzen
    GUICtrlSetData($list,$fileselect)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lied in statusbar schreiben
    status($fileselect)
    ;markieren als besonderes event
    $onesound = 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;playlist speichern jetzt möglich machen
    GUICtrlSetState($saveitem,$GUI_ENABLE)
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;alle knöpfe freischalten
    Func openbuttons()
    GUICtrlSetState($pause, $GUI_ENABLE)
    ;bis stoptaste wieder funktioniert wird sie deaktiviert
    GUICtrlSetState($stop, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn der startknopf gedrückt wurde....
    Func start()
    ;startknopf wieder deaktivieren
    GUICtrlSetState($start, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    ;falls aus einer pause gestartet wurde -> forfahren
    If $paused = 1 Then
    $paused = 0
    fortfahren()
    Return
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Wieviele Lieder sind in in der Playlist gespeichert ? (1 Linie = 1 Pfad zu 1 Lied)
    Countlines()

    [/autoit] [autoit][/autoit] [autoit]

    ;maximale Anzahl der Lieder speichern für zufallsauswahl
    RegWrite("HKEY_CURRENT_USER\Software\NMW","lines","REG_SZ",$loop)
    ;visual aktivieren
    GUICtrlSetState($visual,1)
    ;lieder abspielen starten
    If $optionplay = 1 Then
    AdlibRegister("playsound")
    Else
    AdlibRegister("playsoundlist")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn pause gedrückt wurde
    Func pause()
    ;sound nicht mehr abspielen
    AdlibUnRegister()
    _SoundPause($openedsoundfile)
    ;merken -> nur pause
    $paused = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;in statusbar eintragen
    status("paused")
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func stop()
    ;abspielen beenden
    AdlibUnRegister()
    _SoundClose($openedsoundfile)
    ;in der statusbar als gestoppt anzeigen
    status("stopped" & $space)
    ;merken -> nur stop
    Global $stopped = 1
    ;visual pausieren
    GUICtrlSetState($visual,0)
    ;startknopf aktivieren
    GUICtrlSetState($start, $GUI_ENABLE)
    ;in trayicon anzeigen
    TraySetToolTip("Gestoppt")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func contextlist()
    ;markierten eintrag auslesen
    $read = GUICtrlRead($list)
    ;falls kein Lied ausgewählt wurde
    If $read = "Nothing selected" Or "" Then
    MsgBox(0,"Nicksoft Media Player","Bitte wählen Sie ein Musiktitel aus!")
    Return
    EndIf
    ;sound stoppen
    _SoundClose($openedsoundfile)
    ;ausgelesenes öffnen
    $openedsoundfile = _SoundOpen($read)
    ;ausgelesenes starten
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;zur weiterverarbeitung den Eintrag in der Playlist suchen und Zeile speichern
    $detectline = 1
    Do
    $readcontext = FileReadLine(@Tempdir & "\soundfiles.txt",$detectline)
    $stringstr = StringInStr($readcontext,$read)
    $detectline = $detectline + 1
    Until $stringstr > 1
    ;für alphabet-abspielung speichern
    $aktuelleslied = $detectline

    [/autoit] [autoit][/autoit] [autoit]

    ;statusbar eintragen
    status($readcontext)
    ;danach soll ja weitergemacht werden ! :

    [/autoit] [autoit][/autoit] [autoit]

    ;erst bisheriges stoppen (falls es schon lief)
    AdlibUnRegister()
    If $optionplay = 1 Then
    ;dann neustarten
    AdlibRegister("playsound")
    Else
    AdlibRegister("playsoundlist")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func playlistspeichern()
    ;speicherort auswählen lassen
    $saveplaylist = FileSaveDialog("Playlist speichern",@Desktopdir,"NMP-Playlist (*.nmp)")
    ;wenn abgebrochen wurde zurückkehren
    If @error Then Return
    FileCopy(@Tempdir & "\soundfiles.txt",$saveplaylist & ".nmp",1)
    ;playlist speichern jetzt nichtmehr möglich machen
    GUICtrlSetState($saveitem,$GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetolist()

    [/autoit] [autoit][/autoit] [autoit]

    $optionplay = 2

    [/autoit] [autoit][/autoit] [autoit]

    ;option random wieder einblenden
    GUICtrlSetState($randomitem, $GUI_UNCHECKED)
    GUICtrlSetState($randomitem, $GUI_ENABLE)

    [/autoit] [autoit][/autoit] [autoit]

    ;option ausblenden
    GUICtrlSetState($abcitem, $GUI_CHECKED)
    GUICtrlSetState($abcitem, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func changetorandom()

    [/autoit] [autoit][/autoit] [autoit]

    $optionplay = 1

    [/autoit] [autoit][/autoit] [autoit]

    ;option list wieder einblenden
    GUICtrlSetState($abcitem, $GUI_UNCHECKED)
    GUICtrlSetState($abcitem, $GUI_ENABLE)

    [/autoit] [autoit][/autoit] [autoit]

    ;option ausblenden
    GUICtrlSetState($randomitem, $GUI_CHECKED)
    GUICtrlSetState($randomitem, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; -andere Funktionen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;schnell statusbar beschreiben
    Func status($titel)
    GUICtrlSetData($statuslabel,$titel & $space) ;$space um statusbar immer grau zu hinterlegen
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um zu sehen,ob noch eine Datei gespielt wird (wenn nötig nächstes stück laden)
    Func playsound()
    ;wenn option geändert wurde
    If $optionplay <> 1 Then
    AdlibUnRegister()
    AdlibRegister("playsoundlist")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)
    If not FileExists(@Tempdir & "\soundfiles.txt") And $onesound = 0 Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then
    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;zufallslinie auswählen von 1 bis zu der letzten zeile (registry ausgelesen)
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    If $onesound = 1 Then ExitLoop
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ElseIf $status = "stopped" Then
    ;da zur Zeit Fehler unbekannt neue Art=
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    $readsoundplay
    Else
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;s.o.
    $randomline = Round(Random(1,$maxline))
    ;aus der playlist irgendeine Zeile auswählen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$randomline)
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;dann fahre fort
    ExitLoop
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;für das umstellen auf alphabetisch wird die Linie gespeichert
    $aktuelleslied = $randomline + 1
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wird aufgerufen,falls nichts gedrückt wurde (Konflikt mit Adlib funktion playsound)
    Func volume()
    ;slider auslesen
    $read = GUICtrlRead($volume)
    ;wert einstellen
    SoundSetWaveVolume($read)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    ;Registrywerte löschen
    RegDelete("HKEY_CURRENT_USER\Software\NMW")
    ;lied beenden
    _SoundClose($openedsoundfile)
    ;playlist löschen (wichtig)
    FileDelete(@Tempdir & "\soundfiles.txt")

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;wenn lied als gepaust gemerkt wurde:
    Func fortfahren()
    ;mit lied fortfahren
    _SoundResume($openedsoundfile)
    ;falls nur eine musikdatei gespielt wird,gibt es (logischerweise) keine Playlist !
    If $onesound = 1 Then
    AdlibRegister("playsound")
    Else
    AdlibRegister("playsoundlist")
    EndIf
    status($readsoundplay)
    ;visual aktivieren
    GUICtrlSetState($visual,1)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;linien der Playlist zählen:
    Func Countlines()
    ;initialisiere zählen
    $countlines1 = 1
    ;schleife:
    Do
    ;x.-te Zeile auslesen
    FileReadLine(@Tempdir & "\soundfiles.txt",$countlines1)
    ;errormarkierung speichern (da sonst verfällt)
    $err = @error
    ;variable raufzählen
    $countlines1 = $countlines1 + 1
    ;schleife bis @error = -1 (Dateiende)
    Until $err = -1 Or $countlines1 > 1000
    ;endergebnis speichern
    $loop = $countlines1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;zufallsvisual auswählen & in variable speichern
    Func choosevisual()

    [/autoit] [autoit][/autoit] [autoit]

    $result = Round(Random(1,4))
    $visualnumber = "visual.avi"

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;adlib funktion um nach liste zu spielen (unterschied zu dem zufallsabspielen)
    Func playsoundlist()

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn option geändert wurde
    If $optionplay <> 2 Then
    AdlibUnRegister()
    AdlibRegister("playsound")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;auslesen des Status des aktuellen Musikstückes
    $status = _SoundStatus($openedsoundfile)

    [/autoit] [autoit][/autoit] [autoit]

    If not FileExists(@Tempdir & "\soundfiles.txt") And $onesound = 0 Then
    MsgBox(16,"Error","Playlist konnte nicht gefunden werden.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn das der erste start ist :
    If $readsoundplay = "" Then

    [/autoit] [autoit][/autoit] [autoit]

    ;auslesen der anzahl der lieder
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    ;aus der playlist die nächste zeile auswähen
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;für nächsten start nachsehen
    $aktuelleslied = $aktuelleslied + 1
    ;bis variable nicht leer ist
    Until $readsoundplay <> ""
    ;diesen Pfad einlesen & öffnen (ID bekommen)
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;lied in die statusbar schreiben
    status($readsoundplay)
    ;lied abspielen
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    ;wenn die position des liedes = maximallänge ist:
    ElseIf $status = "stopped" Then
    ;letzte sounddatei schließen
    _SoundClose($openedsoundfile)
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    ;wenn das letzte lied gespielt wurde :
    If @error Then
    MsgBox(64,"Playlist beendet","Playlist ist nun einmal durchgelaufen!")
    Return
    EndIf
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    Else
    If $stopped = 1 Then
    ;stoppmarkierung entfernen
    $stopped = 0
    ;s.o.
    $maxline = RegRead("HKEY_CURRENT_USER\Software\NMW","lines")
    ;schleife , um gegen "Leere Zeile" vorzubeugen
    Do
    $readsoundplay = FileReadLine(@Tempdir & "\soundfiles.txt",$aktuelleslied)
    $aktuelleslied = $aktuelleslied + 1
    ;wenn variable nicht leer ist
    If $readsoundplay <> "" Then
    ;und nicht der letzte song von vorhin war
    If $readsoundplay <> $lastsong Then
    ;dann fahre fort
    ExitLoop
    EndIf
    EndIf
    Until @error
    ;s.o.
    $openedsoundfile = _SoundOpen($readsoundplay)
    ;letztes lied speichern (nicht 2x das gleiche lied hinternander)
    $lastsong = $openedsoundfile
    ;s.o.
    status($readsoundplay)
    ;s.o.
    _SoundPlay($openedsoundfile)
    If @error Then
    MsgBox(32,"Error","Konnte Musikdatei nicht abspielen !")
    stop()
    Return
    EndIf
    ;trayinfo anzeigen
    TraySetToolTip($readsoundplay)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    Es ist das Script von Dankeschön!

  • Hallo @Black_Skorbi,

    wenn du es schon anpasst hättest du auch auf die Version AutoIt 3.3.6.0 updaten sollen. So kommen folgende Fehler:

    mfg (Auto)Bert

  • Ich finds gut :)
    Vor allem den Shutdown Timer, da ich mit immer ein kleines Skript machen muss, dass den PC zur Zeit XX:YY runterfährt weil ich bei Musik einschlafen will^^.
    Aber ein Bug und Verbesserungsvorschlag hab ich noch:
    Ich hab ein Lied abgespielt und auf einmal hing sich das Program auf oO. Weiß aber auch nicht genau was ich gemacht hab... :whistling:
    In der Wiedergabeliste würde ich nur den Titel anzeigen lassen. Das ist, finde ich, übersichtlicher als der ganze Pfad.
    Dann wäre Drag/Drop ganz lustig und vielleicht, dass man Mp3´s auf dein Programm registrieren kann. Ich zum Beispiel habe meinen WMP noch nie anderst gestartet als über die Musik Dateien:whistling:

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]