Aktuelle Sound Position

  • Hi leute, ich habe ein problem ich bekomme es einfach nicht hin, trotz viele versuche und hilfe der Suchfunktion.
    Ich möchte die Aktuelle Zeit von einer Musik haben, bitte um hilfe.

    Hier der Code:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <ListBoxConstants.au3>
    #include <Sound.au3>
    #include <File.au3>
    #NoTrayIcon

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

    Global $opendialog, $sound, $o = 0, $p = 0, $length

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

    FileInstall("mediaplayerxxl.bmp", @TempDir & "\mediaplayerxxl.bmp", 1)
    FileInstall("play.bmp", @TempDir & "\play.bmp", 1)
    FileInstall("pause.bmp", @TempDir & "\pause.bmp", 1)
    FileInstall("stop.bmp", @TempDir & "\stop.bmp", 1)
    FileInstall("played.bmp", @TempDir & "\played.bmp", 1)
    FileInstall("paused.bmp", @TempDir & "\paused.bmp", 1)

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

    HotKeySet("^o", "open")
    HotKeySet("{F1}", "info")

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

    GUICreate("Media Player XXL", 500, 470)
    GUISetBkColor(0x000000)

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

    $menu = GUICtrlCreateMenu("Datei")
    $menu2 = GUICtrlCreateMenu("?")

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

    $itemopen = GUICtrlCreateMenuItem("Öffnen..." & @TAB & "Strg+O", $menu)
    GUICtrlCreateMenuItem("", $menu, -1)
    $itemexit = GUICtrlCreateMenuItem("Beenden", $menu)
    $iteminfo = GUICtrlCreateMenuItem("Info" & @TAB & "F1", $menu2)

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

    GUICtrlCreatePic(@TempDir & "\mediaplayerxxl.bmp", 5, 5, 489, 176)

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

    $play = GUICtrlCreateButton("", 15, 212, 50, 40, $BS_BITMAP)
    GUICtrlSetImage(-1, @TempDir & "\play.bmp")
    $pause = GUICtrlCreateButton("", 70, 212, 50, 40, $BS_BITMAP)
    GUICtrlSetImage(-1, @TempDir & "\pause.bmp")
    $stop = GUICtrlCreateButton("", 125, 212, 50, 40, $BS_BITMAP)
    GUICtrlSetImage(-1, @TempDir & "\stop.bmp")

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

    GUICtrlCreateGroup("Lautstärke", 190, 200, 140, 55)
    $slider = GUICtrlCreateSlider(200, 220, 120, 25)
    GUICtrlSetData(-1, 100)

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

    $file = GUICtrlCreateButton("Öffnen...", 360, 220, 100, 25)

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

    $list = GUICtrlCreateList("", 10, 280, 480, 140)

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

    $label = GUICtrlCreateLabel("00:00:00 / 00:00:00", 200, 425, 200, 25)
    GUICtrlSetColor(-1, 0xffffff)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE, $itemexit
    FileDelete(@TempDir & "\mediaplayerxxl.bmp")
    FileDelete(@TempDir & "\play.bmp")
    FileDelete(@TempDir & "\pause.bmp")
    FileDelete(@TempDir & "\stop.bmp")
    FileDelete(@TempDir & "\played.bmp")
    FileDelete(@TempDir & "\paused.bmp")
    Exit
    Case $file
    open()
    Case $play
    If $o = 0 Then
    $sound = _SoundOpen(GUICtrlRead($list))
    _SoundPlay($sound)
    GUICtrlSetImage($play, @TempDir & "\played.bmp")
    $length = _SoundLength($sound, 1)
    $pos = _SoundPos($sound, 1)
    GUICtrlSetData($label, $pos & " / " & $length)
    $o = 1
    EndIf
    If $p = 1 Then
    _SoundResume($sound)
    GUICtrlSetImage($play, @TempDir & "\played.bmp")
    GUICtrlSetImage($pause, @TempDir & "\pause.bmp")
    $p = 0
    EndIf
    Case $pause
    If $p = 0 Then
    _SoundPause($sound)
    GUICtrlSetImage($play, @TempDir & "\play.bmp")
    GUICtrlSetImage($pause, @TempDir & "\paused.bmp")
    $p = 1
    EndIf
    Case $stop
    _SoundClose($sound)
    GUICtrlSetImage($play, @TempDir & "\play.bmp")
    GUICtrlSetImage($pause, @TempDir & "\pause.bmp")
    $o = 0
    Case $slider
    SoundSetWaveVolume(GUICtrlRead($slider))
    Case $iteminfo
    info()
    EndSwitch

    WEnd

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

    Func open()
    $opendialog = FileOpenDialog("Öffnen...", "", "Medien (*.mp3; *.wav)", 4)
    GUICtrlSetData($list, $opendialog)
    EndFunc

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

    Func info()
    MsgBox(64, "Info", "Media Player XXL" & @CRLF & "Version 1.0.0.0" & @CRLF & "" & @CRLF & "Copyright © 2008, by M3HM3T")
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von m3hm3t (20. Juni 2008 um 21:42)

    • Offizieller Beitrag

    Du musst die Position auch ständig abfragen und nicht nur wenn Du auf den Play-Knopf drückst!

    • Offizieller Beitrag

    Du hast doch schon eine Schleife, einfach zwischen dem EndSwitch und WEnd schreiben!

  • Ok danke Bernd670 jetzt klappt es.
    Aber ein Problem gibt es noch und zwar flackert der text immer so, wie kann ich das verhindern?

    Einmal editiert, zuletzt von m3hm3t (20. Juni 2008 um 21:20)

  • Mein Vorschlag:

    Eine Funktion:

    [autoit]


    Func _pos()
    $pos = _SoundPos($sound, 1)
    EndFunc

    [/autoit]

    Und bei Start-Button:

    [autoit]

    AdlibEnable("_pos",1000)

    [/autoit]

    Und bei Stop-Button:

    [autoit]

    AdlibDisable()

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Hey danke das klappt ja ganz gut!
    Eine Frage noch, was genau bedeutet die Funktion AdlibEnable/Disable(), die Funktionsweise habe ich ja verstanden.

    Danke nochmals.

  • Mal versuchen zu erklären, wenn Du sleep(1000) in der while Schleife setzen würdest, würde dein Script solange still stehen, währen wenn du Adlib nimmst dein Script weiter läuft (was ja gut ist wenn du man nen Butten anklicken willst) und dein Skript pausiert nicht, sprich die while Schliefe läuft weiter. Wenn ich es richtig in Erinnerung habe pausiert dein Skirpt nur bei der Ausführung der Funktion die Adlib aufruft, was ja nicht lange ist.

    Hoffe das ist so richtig, sonst wird BugFix mich bestimmt gerne berichtigen :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)