Script funzt nicht

  • Nabend,

    ich habe einen Script:

    Spoiler anzeigen
    [autoit]

    If _GetStatus($LoadStatus) = "Play" Then

    $playerstate = $oPlayer.playstate

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

    If $playerstate = 6 Or $playerstate = 1 Or $playerstate = 9 Then
    MsgBox(0, "", "Stop")
    Else
    MsgBox(0, "", "Play")
    EndIf

    EndIf

    [/autoit]

    So und der soll jetzt auslesen, ob der Player gerade etwas abspielt oder gestoppt ist.
    Aber leider funktioniert das nur bis Zeile 4. Es wird bei der Variable ($playerstate) die Zahl 9 zurückgegenen und trotzdem funzt das ab der If-Anfrage nicht. Statt MsgBox "Stop" anzuzeigen, wird immer das andere angzeigt.

    Bin schon seit einer Stunde dabei und weiß nicht mehr weiter... ?(

    • Offizieller Beitrag

    Also wenn $playerstate 9 zurückliefert, dann funktioniert die If-Abfrage:

    [autoit]


    $playerstate = 9

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

    If $playerstate = 6 Or $playerstate = 1 Or $playerstate = 9 Then
    MsgBox(0, "", "Stop")
    Else
    MsgBox(0, "", "Play")
    EndIf

    [/autoit]

    Offenbar stimmt bereits vorher etwas nicht. Und ohne weitere Infos läßt sich das nicht nachvollziehen.

  • Stimmt. Schwer nachzuvollziehen. ich habe gerade einen Beispielscript erstellt und da scheint es zu funktionieren.

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    ;Playergröße gestalten
    $oPlayer = _wmpcreate(0, 0, 0, 160, 165)
    ;ende

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

    ;Object create
    _wmpvalue($oPlayer, "controls")
    $oIE = _IECreateEmbedded()
    ;ende

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

    _wmploadmedia($oPlayer, "http://www.wdr.de/wdrlive/media/einslive-wm32.asx", 1)

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

    Sleep(1000)

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

    _wmpvalue($oPlayer, "Play")

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

    MsgBox(0,"","")

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

    If _GetStatus() = "Play" Then

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

    $playerstate = $oPlayer.playstate

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

    MsgBox(0,"",$playerstate)

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

    If $playerstate = 6 Or $playerstate = 1 Or $playerstate = 9 Then
    MsgBox(0, "", "Stop")
    Else
    MsgBox(0, "", "Play")
    EndIf

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

    EndIf

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

    Func _GetStatus()
    Return "Play"
    EndFunc ;==>_GetStatus

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

    Func _wmpcreate($show, $left, $top, $width = 100, $height = 100)
    $oWMP = ObjCreate("WMPlayer.OCX")
    If $oWMP = 0 Then Return 0

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

    If $show = 1 Then
    GUICtrlCreateObj($oWMP, $left, $top, $width, $height)
    EndIf
    Return $oWMP
    EndFunc ;==>_wmpcreate

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

    Func _wmploadmedia(ByRef $object, $URL, $autostart = 1)
    $object.URL = $URL
    If $autostart = 1 Then $object.controls.play()
    EndFunc ;==>_wmploadmedia

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

    Func _wmpvalue($object, $setting, $para = 1)
    Select
    Case $setting = "play"
    If $object.controls.isAvailable("play") Then $object.controls.play()
    Case $setting = "stop"
    If $object.controls.isAvailable("stop") Then $object.controls.stop()
    Case $setting = "pause"
    If $object.controls.isAvailable("pause") Then $object.controls.pause()
    Case $setting = "invisible"
    $object.uiMode = "invisible"
    Case $setting = "controls"
    $object.uiMode = "mini"
    Case $setting = "nocontrols"
    $object.uiMode = "none"
    Case $setting = "fullscreen"
    $object.fullscreen = "true"
    Case $setting = "step"
    If $object.controls.isAvailable("step") Then $object.controls.Step ($para)
    Case $setting = "fastForward"
    If $object.controls.isAvailable("fastForward") Then $object.controls.fastForward()
    Case $setting = "fastReverse"
    If $object.controls.isAvailable("fastReverse") Then $object.controls.fastReverse()
    Case $setting = "volume"
    $object.settings.volume = $para
    Case $setting = "rate"
    $object.settings.rate = $para
    Case $setting = "playcount"
    $object.settings.playCount = $para
    Case $setting = "setposition"
    $object.controls.currentPosition = $para
    Case $setting = "getposition"
    Return $object.controls.currentPosition
    Case $setting = "getpositionstring";Returns HH:MM:SS
    Return $object.controls.currentPositionString
    Case $setting = "getduration"
    Return $object.currentMedia.duration
    EndSelect
    EndFunc ;==>_wmpvalue

    [/autoit]

    Komisch ist aber das hier:

    Spoiler anzeigen
    [autoit]

    $Abfrage = _GetStatus($LoadStatus)

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

    If $Abfrage = "Play" Then

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

    MsgBox(0, "", $Abfrage) ; Zeigt in meinem kompletten Script "Play" an.

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

    $playerstate = $oPlayer.playstate

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

    MsgBox(0, "", $playerstate) ; Hier bekomme ich den Wert 9 zurück

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

    If $playerstate = 6 Or $playerstate = 1 Or $playerstate = 9 Then
    MsgBox(0, "", "Stop") ;Das hier funktioniert nicht...
    Else
    MsgBox(0, "", "Play")
    EndIf

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

    EndIf

    [/autoit]
    • Offizieller Beitrag

    Wenn dabei 10 rauskommt, kann die If-Abfrage ja auch nicht klappen.

    Zitat

    Was soll daran nicht funktionieren? 8|

    Code
    D:\AutoIt\test14.au3(4,40) : ERROR: _wmpcreate(): undefined function.
    $oPlayer = _wmpcreate(0, 0, 0, 160, 165)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\AutoIt\test14.au3(8,31) : ERROR: _wmpvalue(): undefined function.
    _wmpvalue($oPlayer, "controls")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\AutoIt\test14.au3(12,79) : ERROR: _wmploadmedia(): undefined function.
    _wmploadmedia($oPlayer, "http://www.wdr.de/wdrlive/media/einslive-wm32.asx", 1)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\AutoIt\test14.au3 - 3 error(s), 0 warning(s)


    Da fehlt wohl was... ;)

  • Zitat

    Wieso 9, ich denke 10?

    Hier:

    Spoiler anzeigen
    [autoit]

    $Abfrage = _GetStatus($LoadStatus)

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

    If $Abfrage = "Play" Then

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

    MsgBox(0, "", $Abfrage) ; Zeigt in meinem kompletten Script "Play" an.

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

    $playerstate = $oPlayer.playstate

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

    MsgBox(0, "", $playerstate) ; Hier bekomme ich den Wert 9 zurück

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

    If $playerstate = 6 Or $playerstate = 1 Or $playerstate = 9 Then
    MsgBox(0, "", "Stop") ;Das hier funktioniert nicht...
    Else
    MsgBox(0, "", "Play")
    EndIf

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

    EndIf

    [/autoit]

    Dasl liegt wohl eher daran, dass du paar Sekunden warten musst bevor du auf OK bei der MsgBox klickst.


    Endlich funktioniert es jetzt.
    Ich habe das so gemacht und es funktioniert nun:

    [autoit]

    $playerstate = 9

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

    If $playerstate = 6 Or $playerstate = 1 Or $playerstate = 9 Then
    MsgBox(0, "", "Stop")
    ElseIf $playerstate = 3 Then
    MsgBox(0, "", "Play")
    EndIf

    [/autoit]

    Lag das nun an "Else" ??? :huh: