VLC UDF - Prüfen, ob VLC Object funktioniert

  • Hallo liebe autoit.de-Gemeinde,

    ich habe eine Frage bzgl. der VLC UDF:

    Es wird in der Funktion _GUICtrlVLC_Create überprüft, ob das Objekt funktioniert. Das funktioniert aber nicht, denn wenn ich VLC deinstalliere und nun mein Skript starte, das mir den Rückgabewert der eben genannten Funktion anzeigen soll, steht dort einfach nichts.

    Weiß hier jemand, wie man "richtig" überprüfen kann, ob das VLC ActiveX-Objekt funktioniert?

    Vielen Dank im Voraus,
    Thunderbuddy

    Einmal editiert, zuletzt von Thunderbuddy (30. September 2012 um 19:28)

  • Wenn _GUICtrlVLC_Create nicht funktioniert gibt er dir False zurück. Das kannst du ja sehr leicht überprüfen. Wäre die Funktion erfolgreich, bekämst du ein Objekt zurück (welches du natürlich nicht anzeigen kannst). Vielleicht stimmt etwas mit der Fehlerüberprüfung nicht, aber ich denke das wird der Autor der UDF schon getestet haben. Vielleicht wurde bei dir einfach nicht ganz alles vom VLC deinstalliert. Funktionieren denn die anderen Funktionen noch?

    Gruss Shadowigor

  • Ja, das muss wahrscheinlich zum Entwicklungszeitpunkt auch funktioniert haben, aber das war irgendwann 2011. Also kann es sein, dass das mit den neuen VLC-Versionen nicht mehr richtig funktioniert.

    Hast du deine Idee, wie man die Überprüfung richtig machen könnte?

    Hier mal der originale Code-Schnipsel aus der UDF:

    [autoit]


    Func _GUICtrlVLC_Create($left, $top, $width, $height)

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

    Local Const $html = _
    "<style type=""text/css"">html, body, vlc {margin: 0px; padding: 0px; overflow: hidden;}</style>" & @CRLF & _
    "<object classid=""clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921""" & @CRLF & _
    "codebase=""http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab""" & @CRLF & _
    "width=""" & $width & """ height=""" & $height & """" & @CRLF & _
    "id=""vlc"" events=""True"">" & @CRLF & _
    "</object>"

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

    $oIE = _IECreateEmbedded ()
    $oIEActiveX = GUICtrlCreateObj($oIE, $left, $top, $width-4, $height-4)
    _IENavigate($oIE, "about:blank")
    _IEDocWriteHTML($oIE, $html)
    $vlc = _IEGetObjByName($oIE, "vlc")

    ; Clear any current VLC errors
    $oVLCErrorHandler.WinDescription = ""

    ; Check VLC version info. as a means to determine if the Active X control is installed
    $vlc.versionInfo()

    ; If an error (the ActiveX control is not installed), then return False
    if StringInStr($oVLCErrorHandler.WinDescription, "Unknown name") > 0 Then

    GUICtrlDelete($oIEActiveX)
    _IEQuit($oIE)
    Return False
    EndIf

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

    Return $vlc
    EndFunc

    [/autoit]
  • Hat denn sonst noch jemand eine Idee, wie man diese Überprüfung bewerkstelligen könnte? :)

  • Hab gerade keine Lust es zu testen, aber am einfachsten dürfte es wohl sein sich einfach mal den zu überprüfenden Inhalt in der Scite Console ausgeben zu lassen. Dann dürftest du auch sehen warum die stringinstr Prüfung vllt nicht mehr wie gewünscht funktioniert:


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

    consolewrite('debug "WinDescription" : ' & @CRLF & $oVLCErrorHandler.WinDescription & @CRLF)

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

    ; If an error (the ActiveX control is not installed), then return False
    if StringInStr($oVLCErrorHandler.WinDescription, "Unknown name") > 0 Then

    GUICtrlDelete($oIEActiveX)
    _IEQuit($oIE)
    consolewrite("check returns FALSE..." & @crlf)
    Return False
    EndIf

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

    consolewrite("check returns VLC Object..." & @crlf)
    Return $vlc

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

    Die einfachste Erklärung könnte ein Sprachproblem sein, vllt ist die Fehlermeldung bei dir ja auf deutsch. Es wäre aber durchaus auch denkbar, dass die ie.au3 nicht mehr richtig mit deiner IE Version zusammenarbeitet, soweit ich mich erinnere gab es da auch schon Probleme, weil die IE Funktionen nicht mehr ganz so frisch sind. Dazu kommen ggf. Sicherheitseinstellungen des Browsers, welche die Nutzung von activeX ohne Userzustimmung unterbinden könnten.

  • Okay, vielen Dank schon mal für die Idee! :)
    Ich werde mir das mal anschauen und mich nochmal melden.

    UPDATE:
    Wie du vermutet hast, hat es sich um ein Sprachproblem gehandelt. Die Konsole gibt mir "Unbekannter Name" aus und nicht wie vom Skript erwartet "Unknown name".
    Ich werde das Skript dann jetzt so umschreiben, dass es die Win.Description auf den wichtigsten Sprachen prüft (primär natürlich nur Deutsch und Englisch).

    Danke für deine Hilfe! :)

    Einmal editiert, zuletzt von Thunderbuddy (30. September 2012 um 19:17)