_guictrlSlider_setpos()

  • Ich hab das Problem, dass der Slider von diesem Playlistprogramm ab der hälfte aufhört zu Aktualisieren. :(

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <audio.au3>
    #include <array.au3>
    #include <file.au3>
    #include <string.au3>
    #include <GUIListBox.au3>
    #include <Misc.au3>
    #include <timers.au3>
    #include <guislider.au3>
    #include <GUIListBox.au3>

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

    ;folder erstellen

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

    if FileExists(@DesktopDir&"\playlister v2\") = 0 Then DirCreate(@DesktopDir&"\Playlister v2\")
    if FileExists(@DesktopDir&"\playlister v2\list2filenamev2\") = 0 Then DirCreate(@DesktopDir&"\Playlister v2\list2filename\")

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

    ;var's
    Dim $endguigetmsg = 0
    Dim $startplaylist
    Dim $next
    dim $prev
    Dim $delplaylist
    Dim $erstellen
    Dim $PausePlay
    dim $Gerade
    Dim $List1
    Dim $sound
    Dim $Slider1

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

    ;Startup Func's

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

    _Gui(1)
    _guigetmsg(1)

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

    ;Internal Functions

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

    Func _Gui($onoff)
    If $onoff = 1 Then
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Playlister", 617, 221, 150, 211)
    $infolabel = GUICtrlCreateLabel("", 152, 24, 436, 40)
    $erstellen = GUICtrlCreateButton("Erstellen:", 32, 16, 99, 65)
    $startplaylist = GUICtrlCreateButton("Playlist start", 352, 72, 83, 25)
    $PausePlay = GUICtrlCreateButton("Play", 40, 104, 75, 25)
    $next = GUICtrlCreateButton("Nächster", 160, 152, 75, 25)
    $prev = GUICtrlCreateButton("Vorheriger", 40, 152, 75, 25)
    $List1 = GUICtrlCreateList("", 352, 104, 169, 97)
    GUICtrlSetData(-1, "")
    $Slider1 = _GUICtrlSlider_Create($Form1,16, 184, 302, 29,$TBS_TOOLTIPS)
    $delplaylist = GUICtrlCreateButton("Playlist löschen", 440, 72, 83, 25)
    GUISetState(@SW_SHOW)
    _UpdateList()
    #endregion
    Else
    GUISetState(@SW_HIDE,$Form1)
    EndIf
    EndFunc

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

    Func _guigetmsg($onoff)
    If $onoff = 1 Then
    While $endguigetmsg = 0
    _guigetmsgonce()
    WEnd
    Else
    $endguigetmsg = 1
    EndIf
    EndFunc

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

    Func _exit()
    Global $endguigetmsg = 1
    Exit
    EndFunc

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

    Func _guigetmsgonce()
    Switch GUIGetMsg()
    Case $gui_event_close
    _exit()
    Case $startplaylist
    $read = _GUICtrlListBox_GetCurSel($List1)
    $list2filename = FileReadLine(@DesktopDir&"\playlister v2\list2filename\"&$read&".list2filename",1)
    _startplaylist($list2filename)
    Case $next
    $read = _GUICtrlListBox_GetCurSel($List1)
    $list2filename = FileReadLine(@DesktopDir&"\playlister v2\list2filename\"&$read&".list2filename",1)
    _next($list2filename)
    Case $prev
    $read = _GUICtrlListBox_GetCurSel($List1)
    $list2filename = FileReadLine(@DesktopDir&"\playlister v2\list2filename\"&$read&".list2filename",1)
    _prev($list2filename)
    Case $delplaylist
    $read = _GUICtrlListBox_GetCurSel($List1)
    $list2filename = FileReadLine(@DesktopDir&"\playlister v2\list2filename\"&$read&".list2filename",1)
    _deleteplaylist($list2filename)
    Case $PausePlay
    _pauseplay()
    Case $erstellen
    _erstellen()
    EndSwitch
    EndFunc

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

    Func _erstellen()
    GUICtrlSetData($Gerade,"Playlist wird erstellt")
    $name = InputBox("", "wie soll es heissen? (a-z) ")
    $folder = FileSelectFolder("Ordner auswählen", "", 2)
    $firstfile = FileFindFirstFile($folder & "\*.mp3")
    $file = @DesktopDir & "\Playlister v2\namestart" & $name & "nameend.txt"
    _FileCreate($file)
    _FileWriteToLine($file, 1, "0", 1)
    $count = "0"
    Do
    _guigetmsgonce()
    $nextfile = FileFindNextFile($firstfile)
    $lenght = _SoundLength($folder & "\" & $nextfile, 2)
    $succes = _FileWriteToLine($file, $count + 2, "<name>" & $folder & "\" & $nextfile & "</name><lenght>" & $lenght & "</lenght>", 1)
    $count = $count + 1
    Until $nextfile = ""
    FileClose($firstfile)
    GUICtrlSetData($List1,"")
    _UpdateList()
    EndFunc

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

    Func _UpdateList()
    $count = 0
    Do
    _GUICtrlListBox_DeleteString($List1,$count)
    $count = $count + 1
    Until _GUICtrlListBox_GetCount($List1) = 0
    $countlist2filename = "0"
    $firstfile = FileFindFirstFile(@DesktopDir & "\playlister v2\*.txt")
    Do
    $nextfile = FileFindNextFile($firstfile)
    $nextfilename = _StringBetween($nextfile, "namestart", "nameend")
    If IsArray($nextfilename) = 1 Then $nextfilename = $nextfilename[0]
    If $nextfilename <> "" Then
    _GUICtrlListBox_AddString($List1, $nextfilename)
    MsgBox(0x0,"",$nextfilename)
    _FileCreate(@DesktopDir & "\playlister v2\list2filename\"&$countlist2filename&".list2filename")
    _FileWriteToLine(@DesktopDir & "\playlister v2\list2filename\"&$countlist2filename&".list2filename",1,$nextfilename,1)
    $countlist2filename = $countlist2filename + 1
    EndIf
    Until $nextfile = ""
    EndFunc

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

    Func _startplaylist($_list2filename)
    If _GUICtrlListBox_GetCurSel($List1) <> -1 Then
    Do
    GUICtrlSetData($PausePlay,"Pause")
    $playcount = FileReadLine(@DesktopDir&"\playlister v2\namestart"&$_list2filename&"nameend.txt",1)+2
    $read = FileReadLine(@DesktopDir&"\playlister v2\namestart"&$_list2filename&"nameend.txt",$playcount)
    $between = _StringBetween($read,"<name>","</name>")
    If IsArray($between) = 1 Then $between = $between[0]
    Global $sound = _SoundOpen($between)
    If $sound = 0 Then
    _SoundStop($sound)
    $play = 0
    EndIf
    _SoundPlay($sound)
    Do
    _sliderupdateonce($Slider1)
    _guigetmsgonce()
    Until _SoundStatus($sound) = "stopped"
    _next($_list2filename)
    Until _SoundStatus($sound) = 0
    EndIf
    EndFunc

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

    Func _next($_list2filename)
    _SoundStop($sound)
    $reading = FileReadLine(@DesktopDir&"\playlister v2\namestart"&$_list2filename&"nameend.txt",1)
    _FileWriteToLine(@DesktopDir&"\playlister v2\namestart"&$_list2filename&"nameend.txt",1,$reading+1,1)
    _startplaylist($_list2filename)
    EndFunc

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

    Func _prev($_list2filename)
    _SoundStop($sound)
    $reading = FileReadLine(@DesktopDir&"\playlister v2\namestart"&$_list2filename&"nameend.txt",1)
    _FileWriteToLine(@DesktopDir&"\playlister v2\namestart"&$_list2filename&"nameend.txt",1,$reading-1,1)
    _startplaylist($_list2filename)
    EndFunc

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

    Func _deleteplaylist($list2filename)

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

    EndFunc

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

    Func _pauseplay()
    If GUICtrlRead($PausePlay) = "Play" Then
    $resume = _SoundResume($sound)
    If $resume = 1 Then GUICtrlSetData($PausePlay,"Pause")
    Else
    $pause = _SoundPause($sound)
    if $pause = 1 Then GUICtrlSetData($PausePlay,"Play")
    EndIf
    EndFunc

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

    Func _sliderupdateonce($hwnd)
    _GUICtrlSlider_setPos($hwnd, _SoundPos($sound,2) / _SoundLength($sound,2) * 100 )
    EndFunc

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

    Ich bitte um Hilfe und Dank im Vorraus!!

    #edit: Meine Tests haben ergeben, dass _soundpos() nicht aktualisiert wird.

    2 Mal editiert, zuletzt von jasper3108 (19. Juni 2012 um 10:47)