Objekt Return wert

  • So da mein altes Thema in vergessenheit gekommen ist und das ursprüngliche problem gelöst wurde, versuch ich es mal erneut.

    Mein Problem ist es, ich bekomme einen Leeren Return wert, bzw garkeinen oder eine "0".

    Hier einmal der link zur Msdn

    Spoiler anzeigen
    [autoit]

    #include <WMMedia.au3>
    #include <File.au3>
    WMStartPlayer()
    WMPlay(FileOpenDialog("","C:\","Mp3 (*.mp3)"))
    Global $media
    HotKeySet("{Tab}","nextmedia")
    If @error = 1 Then MsgBox(0,"","Blub")
    Func nextmedia()
    $media = CurrentMedia()
    MsgBox(0,"",$media)
    EndFunc
    Func CurrentMedia()
    MsgBox(0,"",$pObj.currentMedia)
    $media = $pObj.currentMedia.name()
    EndFunc
    While 1
    Sleep(5000)
    WEnd

    [/autoit]


    Hier ein Ausschnitt aus der include datei :

    Spoiler anzeigen
    [autoit]

    Func WMStartPlayer()

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

    If $pObj = 0 Then

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

    $pObj = ObjCreate("WMPlayer.ocx")

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

    Else

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

    MsgBox(0,"Fehler","Obejkt Fehler")

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

    EndIf

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

    If IsObj($pObj) <> 1 Then MsgBox(0,"Fehler","Obejkt Fehler")

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

    EndFunc
    Func WMPlay($sFilename)
    If $pObj <> 0 Then
    $pObj.url = $sFilename
    While Not WMGetState() = "Playing"
    Sleep(100)
    WEnd
    EndIf
    If $pObj = 0 Then SetError(1)
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von jeje13 (13. Februar 2012 um 01:49)

  • Du hast ja überhaupt kein Return in einer von diesen Funktionen. Also bei welcher Funktion liegt dein Problem?

    Gruss Shadowigor

  • normalerweise sollte der request auf das objekt doch das aktuelle medium ausgeben? oder lieg ich da falsch?

  • [autoit]

    MsgBox(0,"",$pObj.currentMedia)
    $media = $pObj.currentMedia.name()

    [/autoit]

    Dabei,
    Das erste gibt garnichts zurüch und 2te eine einfach "0".
    Normalerweise sollte aber das aktuelle Medium ausgegeben werden.
    Die Befehle zum z.B. abspielen funktionieren.

    • Offizieller Beitrag

    Wie willst du denn einen Rückgabewert bekommen?

    [autoit]

    Func nextmedia()
    $media = CurrentMedia()
    MsgBox(0,"",$media)
    EndFunc

    [/autoit]

    $media setzt du in der Funktion CurrentMedia, gleichzeitig überschreibst du aber mit $media = CurrentMedia() den Wert von $media, da die Funktion keinen Rückgabewert hat. Also 0

    Edit: Bitte häge die Includedatei an, da dein Beispielgeschreibsel vollkommen Fehlerverseucht ist.

  • oh danke. Naja im Anderen Thema hab ich das anders versucht klappt auch nicht.

    [autoit]

    Func CurrentMedia()
    MsgBox(0,"",$pObj.currentMedia())
    MsgBox(0,"",$pObj.currentMedia.name())
    EndFunc

    [/autoit]

    So war das eig gedacht. War arg unsauber, weil ich einfach am rumprobieren bin.
    Das War mein anderes Thema im bezug darauf, ging es aber ursprünglich um ein anderes Problem. Falls es wen intressieren sollte.
    Ich komm da einfach nicht weiter.

    • Offizieller Beitrag

    Was willst du eigentlich erfahren? Den Titel?
    Den Titel bekommst du mit

    [autoit]

    MsgBox(0,"",$pObj.currentMedia.name)

    [/autoit]
  • Wenn ich das bei mir ausführe, bekomme ich immer nur eine leere Msgbox, weiß jmd wodran das liegen kann?

  • Irgendwie fühl ich mich jetzt verarscht, das Skript läuft plötzlich nicht mehr. ohne das ich was geändert habe.

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=Wmp_Yt.exe
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Res_LegalCopyright=JeJe
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <WMMedia.au3>
    #include <INet.au3>

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

    HotKeySet("{Tab}","Currentmedia")
    Global $currentlink = ""
    Global $input_link = ""
    Global $playlist = ""
    Global $tempfile = @TempDir & "/wmpliste.m3u"
    Global $pObj

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

    WMStartPlayer()
    If @error = 1 Then MsgBox(0,"","Blub")
    $pObj.openPlayer("http://www.youtube.com/v/_mW3hTCA1s0")
    ;$pObj.openPlayer("F:\Musik\Charts\German_TOP100_Single_Charts_20_12_2010-MCG\000-german_top100_single_charts_20_12_2010-mcg.m3u")
    While 1
    Sleep(5000)
    WEnd
    Func CurrentMedia()
    If IsObj($pObj) = 0 Then MsgBox(0,"Fehler","Objekt Fehler")
    MsgBox(0,"",$pObj.currentMedia.name )
    EndFunc

    [/autoit]

    Edit :
    Sry Errormeldugn vergessen.

    C:\Users\Jerome\Documents\Autoit\WmpYt\WmpYt2.au3 (35) : ==> Variable must be of type "Object".:
    MsgBox(0,"",$pObj.currentMedia.name )
    MsgBox(0,"",$pObj.currentMedia^ ERROR

  • In der Include datei wird das erstellt (Funktion WMStartPlayer)
    Fehlerabfrage mit error und IsObj komtm beides zum ergebnis das das objekt exestiert.
    Und es lied ja auch , bis zum Pc neustart .

  • Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #RequireAdmin
    Global $pObj
    $pObj = ObjCreate("WMPlayer.ocx")
    $video = FileOpenDialog("","C:","Mp3 (*.mp3)")
    $pObj.openPlayer($video)
    IF IsObj($pObj) = 0 Then MsgBox(0,"","")
    Sleep(5000)
    MsgBox(0,"",$pObj.currentMedia.name)

    [/autoit]

    Selbst das klappt nicht mehr.

    C:\Users\Jerome\Documents\Autoit\WmpYt\1.au3 (8) : ==> Variable must be of type "Object".:
    MsgBox(0,"",$pObj.currentMedia.name)
    MsgBox(0,"",$pObj.currentMedia^ ERROR
    ->22:32:20 AutoIT3.exe ended.rc:1

  • $pObj.currentMedia scheint kein Object zu sein.
    Gibt es denn ein currentMedia? D.h. läuft denn derzeit irgendwas?

  • jup gibt es . Wie gesgat Isobj sagt es ist ein objekt.
    k.A. warum so ne Meldung kommt , aufjedenfall hab ich den fehler (hoffentlich) gefunden.

    [autoit]

    [autoit]#include <File.au3>
    #RequireAdmin
    $pObj = ObjCreate("WMPlayer.ocx")

    [/autoit]

    [/autoit]

    [autoit]

    [autoit]

    [/autoit]

    [/autoit]

    [autoit]

    [autoit]IF IsObj($pObj) = 0 Then MsgBox(0,"","")

    [/autoit]

    [/autoit]

    [autoit]

    [autoit]

    [/autoit]

    [/autoit]

    [autoit]

    [autoit];$video = FileOpenDialog("","C:","Mp3 (*.mp3)")
    $pObj.URL = "http://www.youtube.com/v/VAN-fdz3nwY"
    MsgBox(0,"",$pObj.currentMedia.name)
    $pObj.openPlayer("http://www.youtube.com/v/VAN-fdz3nwY")
    MsgBox(0,"",$pObj.currentMedia.name)
    Sleep(10000)

    [/autoit]

    [/autoit]

    So funktionierts zumindest grade. Danke (=