Datei aus ListBox auslesen und Starten

  • Hi @ all,
    ich hab angefangen einen Musikplayer zu Skripten.
    Die hauptfunktionen hab ich ja(Abspielenm, Pause und Stop)
    aber ich möchte das die Datei in eine ListBox geschrieben wird(schon erledigt)
    und das mann dann eine Datei aus der Box auswählen kann die abgespielt werden soll(da hängts bei mir :P)
    Hier der Code:

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <sound.au3>
    #NoTrayIcon

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

    Global $position
    Global $paus
    Global $lang
    Global $soundplay

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("NextGenPlayer", 495, 237, 192, 124)
    $Slider = GUICtrlCreateSlider(448, 8, 25, 185, BitOR($TBS_VERT,$TBS_AUTOTICKS,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
    $Label1 = GUICtrlCreateLabel("Lautstärke", 432, 200, 54, 17)
    $Lied = GUICtrlCreateButton("Lied wählen", 8, 8, 73, 25)
    $Play = GUICtrlCreateButton("Play", 8, 56, 89, 25)
    $Pause = GUICtrlCreateButton("Pause", 128, 56, 89, 25)
    $Stop = GUICtrlCreateButton("Stop", 272, 56, 81, 25)
    $List1 = GUICtrlCreateList("", 16, 120, 377, 97)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Lied
    $File=FileOpenDialog("","","Musik Dateien (*.wma;*.mp3;*.wav;*.mpg)")
    GUICtrlSetData($List1, $File)
    Case $Play
    _SoundPlay($List1)
    Case $Pause
    _SoundPause($List1)

    Case $Stop
    _SoundStop($List1)

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

    EndSwitch
    SoundSetWaveVolume(GUICtrlRead($Slider))

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



    WEnd

    [/autoit]

    MfG Roggazzz

    Edit: kann mir noch wer sagen wie ich den DateiPfad verstecke das nur der Dateiname angezeigt wird?

  • du musst das gerade gewählte Element an soundplay übergeben und nicht die ganze Liste. Wenn du nur den Dateinamen haben möchtest dann speichere doch den vollständigen Pfad in einem Array, am selben index wie du das neue Item in die liste einfügst

  • Habs mit folgender OnEvent Methode probiert, leider auch erfolglos... :huh:
    Würde mich auch mal interessieren, wei das richtig geht.

    [autoit]

    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <sound.au3>
    #NoTrayIcon

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

    Global $position
    Global $paus
    Global $lang
    Global $soundplay

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("NextGenPlayer", 495, 237, 192, 124)
    $Slider = GUICtrlCreateSlider(448, 8, 25, 185, BitOR($TBS_VERT,$TBS_AUTOTICKS,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
    $Label1 = GUICtrlCreateLabel("Lautstärke", 432, 200, 54, 17)
    $Lied = GUICtrlCreateButton("Lied wählen", 8, 8, 73, 25)
    $Play = GUICtrlCreateButton("Play", 8, 56, 89, 25)
    $Pause = GUICtrlCreateButton("Pause", 128, 56, 89, 25)
    $Stop = GUICtrlCreateButton("Stop", 272, 56, 81, 25)
    $List1 = GUICtrlCreateList("", 16, 120, 377, 97)
    GUISetOnEvent($GUI_EVENT_CLOSE ,"Beenden")

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Opt("GUIOnEventMode", 1)
    GUICtrlSetOnEvent($Lied, "Lied")
    GUICtrlSetOnEvent($Play, "Play")

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

    While 1
    Global $Dateipfad = GUICtrlRead($List1)
    Sleep(2)
    WEnd

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

    Func Lied()
    $Ausgesucht = FileOpenDialog("","","Musik Dateien (*.wma;*.mp3;*.wav;*.mpg)")
    GUICtrlSetData($List1, $Ausgesucht)
    EndFunc

    Func Beenden()
    Exit
    EndFunc

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

    Func Play()
    $abzuspielen = _GUICtrlListBox_GetText($List1, 4)
    SoundPlay($abzuspielen)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]
  • SoundPlay($abzuspielen)
    hier fehlt der unterstrich bei deiner funktion

    _SoundPlay($abzuspielen)

  • Zitat

    SoundPlay($abzuspielen)
    hier fehlt der unterstrich bei deiner funktion

    _SoundPlay($abzuspielen)


    Ne, es gibt auch ein SoundPlay ohne Unterstrich, bei dem muss man die Sounddatei vorher nicht extra öffnen.
    Beispiel aus der AutoitHilfe:

    [autoit]

    SoundPlay(@WindowsDir & "\media\tada.wav",1)

    [/autoit]
  • Du kannst nicht wie leviathan schon richtig gesagt hat, nicht einfach die ganze Liste in die SoundPlay -Funktion packen. Du musst beim Klicken auf ein ListItem, den Pfad der Sounddatei zurückgeben und diesen dann in die SoundPlay-Funktion.

    Pseudocode, da ich die Funktionen nicht auswenig weiß:

    [autoit]


    ; wenn Item in der Liste geklickt dann..
    ListGetItem(geklicktes Item)
    $path = GetPfad von dem Sound (geklicktes Item)
    _SoundPlay($path)

    [/autoit]

    Lg Jautois

  • Hier der Code:

    Spoiler anzeigen
    [autoit]

    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <sound.au3>

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

    Dim $sounds[5] = ["File1: Pfad","File2: Pfad","File3: Pfad","File4: Pfad","File5: Pfad"]

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

    GUICreate("Beispiel", 400, 296)
    $hListBox = GUICtrlCreateList("", 2, 2, 396, 296, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))
    GUISetState()

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

    _GUICtrlListBox_BeginUpdate($hListBox)
    For $i = 1 To 5
    _GUICtrlListBox_AddString($hListBox, StringFormat("%03d : File" & $i, $i))
    Next
    _GUICtrlListBox_EndUpdate($hListBox)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hListBox
    $angewaehlt = _GUICtrlListBox_GetCurSel($hListBox)
    $dertext = _GUICtrlListBox_GetText($hListBox, $angewaehlt)
    MsgBox(1,"Sound von: ",$sounds[$angewaehlt])
    _SoundPlay($sounds[$angewaehlt])
    EndSwitch
    WEnd

    [/autoit]

    Hoffe das hilft...

  • so jetzt kommt erstmal mucke ihr müsst euch schon erstmal entscheiden über welchen player ihr es laufen lasst ^^
    habe jetz erstmal über mediaplayer und mit der listbox schaue ich auch noch

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <sound.au3>
    #Include <File.au3>
    #NoTrayIcon

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

    Global $position
    Global $paus
    Global $lang
    Global $soundplay

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("NextGenPlayer", 495, 237, 192, 124)
    $Slider = GUICtrlCreateSlider(448, 8, 25, 185, BitOR($TBS_VERT,$TBS_AUTOTICKS,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
    $Label1 = GUICtrlCreateLabel("Lautstärke", 432, 200, 54, 17)
    $Lied = GUICtrlCreateButton("Lied wählen", 8, 8, 73, 25)
    $Play = GUICtrlCreateButton("Play", 8, 56, 89, 25)
    $Pause = GUICtrlCreateButton("Pause", 128, 56, 89, 25)
    $Stop = GUICtrlCreateButton("Stop", 272, 56, 81, 25)
    $List1 = GUICtrlCreateList("", 16, 120, 377, 97)
    $oWMP = ObjCreate("WMPlayer.OCX")
    GUICtrlCreateObj($oWMP, 2, 24, 1, 1)
    With $oWMP
    .URL = ("channel\player.html")
    .fullScreen = True
    .windowlessVideo = True
    .stretchToFit = True
    .enableContextMenu = True
    ;.enabled = True
    .uiMode = "none"; none / mini full
    .settings.autostart = True
    .settings.mute = True
    .settings.volume = 100; 0 - 100
    .settings.Balance = 0; -100 to 100
    EndWith
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $oMediaPlayControl = $oWMP.Controls

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Lied
    $File=FileOpenDialog("","","Musik Dateien (*.wma;*.mp3;*.wav;*.mpg)",1+4)
    GUICtrlSetData($List1, $File)
    $oWMP.url = ($File)
    Case $Play
    $oMediaPlayControl.play
    Case $Pause
    _SoundPause($List1)

    Case $Stop
    _SoundStop($List1)

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

    EndSwitch
    ;SoundSetWaveVolume(GUICtrlRead($Slider))

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



    WEnd

    [/autoit]
  • Also einfacher kann ich es kaum noch machen :P

    Du kannst doch einfach meinen Code umbaunen, sodass er bei dir passt und dann fügst du ihn in deinen Code ein.

    Das schaffst du :thumbup:

    Wenn was unklar ist, frag präzise danach.

  • Hallo Roggazzz,

    ich würde es so lösen,

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <sound.au3>
    #NoTrayIcon

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

    Global $position
    Global $paus
    Global $lang
    Global $soundplay
    Global $drive,$dir,$fname,$ext, $lID

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("NextGenPlayer", 495, 237, 192, 124)
    $Slider = GUICtrlCreateSlider(448, 8, 25, 185, BitOR($TBS_VERT,$TBS_AUTOTICKS,$TBS_NOTICKS,$TBS_ENABLESELRANGE))
    $Label1 = GUICtrlCreateLabel("Lautstärke", 432, 200, 54, 17)
    $Lied = GUICtrlCreateButton("Lied wählen", 8, 8, 73, 25)
    $Play = GUICtrlCreateButton("Play", 8, 56, 89, 25)
    $Pause = GUICtrlCreateButton("Pause", 128, 56, 89, 25)
    $Stop = GUICtrlCreateButton("Stop", 272, 56, 81, 25)
    $List1 = GUICtrlCreateList("", 16, 120, 377, 97)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Lied
    $File=FileOpenDialog("","","Musik Dateien (*.wma;*.mp3;*.wav;*.mpg)")
    GUICtrlSetData($List1, $File)
    Case $Play
    if $lID=0 then
    _PathSplit(GUICtrlRead($List1),$drive,$dir,$fname,$ext)
    $lID=_SoundOpen ($fname&$ext)
    Else
    _SoundResume($lID)
    EndIf
    _SoundPlay($lID)
    Case $Pause
    _SoundPause($lID)

    Case $Stop
    _SoundStop($lID)
    $lID = 0
    Case $Slider
    SoundSetWaveVolume(GUICtrlRead($Slider))

    EndSwitch

    WEnd

    [/autoit]

    mfg (Auto)Bert