Problem beim Pausieren und wieder Starten eines Songs über _SoundPause() und _SoundResume

  • Ich habe erst vor kurzem mit AutoIt angefangen und habe nun mit einem Kollegen versucht, einen Musikplayer hinzubekommen.
    Das öffnen und abspielen klappt schonmal. Aber die Pause-Funktion will leider nicht gehen.

    Ich glaube es liegt an der Headerdatei Sound.au3 aber ich wäre froh, wenn jemand denn Fehler entdeckt!
    Danke schonmals.

    • Offizieller Beitrag

    SoundPlay und die UDF Funktionen sind glaube ich nicht kompatibel. Versuch es mal so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Sound.au3>
    #include <string.au3>
    #include <array.au3>
    #Include <GuiStatusBar.au3>
    #include <GUIConstants.au3>

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

    Global $zaehler = "0",$Listbox1, $ListBox2
    global $file, $WS_HSCROLL, $Song1="1", $Song2="2",$Song3="3",$Song4="4", $Song5="5", $Song6="6", $Song7="7", $Song8="8", $Song9="9", $Song10="10", $Song11="11", $Song12="12", $Song13="13", $Sound

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Player", 365, 316, 652, 187)
    GUISetBkColor(0xC8C8C8)
    $filemenu = GUICtrlCreateMenu("Datei")
    $fileitem = GUICtrlCreateMenuItem("Öffnen...", $filemenu)
    $helpmenu = GUICtrlCreateMenu("?")
    $aboutitem = GUICtrlCreateMenuItem("About", $helpmenu)
    $ListBox1 = GUICtrlCreateList("", 8, 32, 249, 201)
    $Button7 = GUICtrlCreateButton("Öffnen...", 272, 40, 81, 25, 0)
    $Label1 = GUICtrlCreateLabel("Musikdatei", 8, 8, 46, 20)
    GUICtrlSetFont(-1, 10, 400, 2, "Century Gothic")
    $Button1 = GUICtrlCreateButton("Entfernen", 272, 75, 81, 25, 0)
    $Button3 = GUICtrlCreateButton("Play", 56, 248, 70, 41, 0)
    GUICtrlSetImage(-1, "shell32.dll", 246)
    $Button4 = GUICtrlCreateButton("Pause", 136, 248, 70, 41, 0)
    GUICtrlSetImage(-1, "shell32.dll", 200)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Func _fileOpen()
    Local $file = FileOpenDialog("Musikdatei auswählen", "C:", "Song files (*.mp3; *.wma; *.wav)", 2+1)
    If @error Then Return
    GUICtrlSetData($ListBox1,$file)
    ;If $Song1 = "1" Then
    ; $Song1 = $file

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

    EndFunc ;==>_fileOpen

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $msg = $Button7
    _fileOpen()

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

    Case $msg = $Button3
    $Sound = GUICtrlRead($ListBox1)
    $soundFile = _SoundOpen($Sound)
    _SoundPlay($soundFile)

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

    Case $msg = $Button4
    _SoundPause($soundFile) ;Hier ist irgendwo der Fehler, könnte es sein, das die Variable $Sound hier nicht abrufbar ist?

    Case $msg = $Button3
    _SoundResume($soundFile)

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

    EndSelect
    WEnd

    [/autoit]
  • ja danke, dann muss der Resume-Button aber ein anderer sein als der Pause-Button, so geht's bei uns.
    Aber ich habe nicht ganz verstanden, wie du das jetzt gemacht hast. Bei mir kam immer ne Fehlermeldung, wenn ich _SoundOpen($Sound) benutzt habe.
    So kommen wir aber schon viel weiter, danke :)

  • ja danke, dann muss der Resume-Button aber ein anderer sein als der Pause-Button

    Das war doch in deinem geposteten Beispiel auch der Fall, siehe:

    Zitat von Peterflip
    [autoit]


    Case $msg = $Button4
    _SoundPause($Sound);Hier ist irgendwo der Fehler, könnte es sein, das die Variable $Sound hier nicht abrufbar ist?

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

    Case $msg = $Button3
    _SoundResume($Sound)

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

    Du hattest doch außerdem den Play-Button als Resume-Button vorgesehen und du fragst in deiner Message-Loop den Button3 doppelt ab, was bedeutet, dass die _SoundResume()-Funktion nie aufgerufen wird. :huh:

    Gruß Ashpool

    Zitat von mir

    Bin immer wieder erstaunt, wie begrenzt ein Horizont sein kann.

  • so, jetzt klappts eigentlich.
    Ich lasse den Pause-Button verstecken, sobald man darauf drückt.
    Anstelle des Pause-Buttons erscheint dann dort der Resume-Button. Klappt super, danke!