VLC ActiveX Plugin (Registrierung)

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von hm_krause.

    VLC ActiveX Plugin (Registrierung)

    Guten Abend,
    ich bekomme es einfach nicht zustande, das VLC ActiveX Plugin (axvlc.dll) als COM-Element in mein Projekt einzubauen. Was ich schon versucht habe und nicht klappt:
    1. Installation von VLC (sowohl 32bit als auch 64bit) mit Haken bei ActiveX Plugin.
    2. Manuelles Hinzufügen der axvlc.dll zu den COM-Elementen (Toolboxelemente auswählen... --> führt zu "Fehler bei Selbstregistrierung").
    3. regsvr32 "C:\Program Files\VideoLAN\VLC\axvlc.dll" in Ausführen.
    4. Hinzufügen der Verweise zum Projekt (für die DLL-Dateien, also Interop etc.).

    Ich sollte vielleicht erwähnen, dass es mir vor ein paar Stunden (fragt mich nicht, wie; das Plugin wurde in der COM-Liste einfach angezeigt, mit asiatischen Zeichen) gelungen ist, das ActiveX Control in die Form zu bekommen und auch zu bedienen (ganz normal). Da es dann aber auf anderen Computern nicht klappte (offensichtlich habe ich auf die DLL-Dateien in meinem VLC-Verzeichnis verwiesen), habe ich mich entschlossen, es neu zu machen. Natürlich werden jetzt im Designer Fehler von wegen "Modul nicht gefunden" angezeigt und das Programm ist unausführbar (logisch). Das kann ich auch fixen, aber erst will ich wissen, wie ich mein VLC Plugin wieder bekomme. Sämtliche Guides haben nicht geholfen. Also meine zwei Fragen:
    1) Wie kann ich das ActiveX Plugin von VLC in mein Projekt inkludieren, wenn oben beschriebene Wege nicht klappen?
    2) Es sollte doch möglich sein, auf lokale DLL-Dateien zu verweisen (im Programmordner) und das Programm dann selbst auf Computern auszuführen, auf denen VLC nicht installiert ist, oder?


    Mit freundlichen Grüßen und Danke im Voraus,
    Afritus

    Afritus schrieb:

    1) Wie kann ich das ActiveX Plugin von VLC in mein Projekt inkludieren, wenn oben beschriebene Wege nicht klappen?
    Du kannst den COM-Interop-Kram manuell machen, was im beschriebenen Fall dringend anzuraten ist. Ohne Erfahrung in diesem Bereich (?) dürfte das aber relativ komplex bis unmachbar werden. Prinzipiell läuft das immer nach demselben Schema: Interop-Interfaces und ein paar Win32API-Call deklarieren, Instanz der Komponente erstellen (sofern vorhanden), benutzen und freigeben.

    Bei Erstellen der Instanz lauert schon die häufigste Fehlerquelle: Die Komponente existiert nicht oder ist nicht registriert. Das führt uns zu Frage 2:

    Afritus schrieb:

    2) Es sollte doch möglich sein, auf lokale DLL-Dateien zu verweisen (im Programmordner) und das Programm dann selbst auf Computern auszuführen, auf denen VLC nicht installiert ist, oder?
    Nein, das ist nicht möglich. ActiveX ein eine Erweiterung von COM, woraus sich ergibt, dass jede Komponente, die du benutzen willst, auf dem Zielsystem vorhanden und registriert sein muss. Es reicht nicht, die DLLs mitzuliefern - bei der Installation trägt sich der VLC in die Registry an passender Stelle ein, damit das ActiveX-Control gefunden werden kann. Ist er nicht installiert, scheitert das ganze Vorhaben.
    Gruß
    hal2000
    Vielen Dank für die schnelle Antwort!
    Gut, das ist mir jetzt klar. Wieso es allerdings bei mir nicht erkannt wird, ist mir nach wie vor ein Rätsel. Habe mich in den letzten Jahren intensiv mit C und Python beschäftigt, da sind meine VB-Kenntnisse offensichtlich etwas eingerostet :/

    hal2000 schrieb:

    Es reicht nicht, die DLLs mitzuliefern - bei der Installation trägt sich der VLC in die Registry an passender Stelle ein, damit das ActiveX-Control gefunden werden kann. Ist er nicht installiert, scheitert das ganze Vorhaben.
    Obwohl zwar nahezu jede Person VLC installiert haben sollte, werde ich mich dann nach weiteren Methoden umsehen, um Mediendateien, die über .avi etc. hinausgehen, explizit auch .mkv, abspielen zu können. Werde nun Google durchforsten, aber weiß jemand zufällig eine andere Möglichkeit, beispielsweise .mkv-Dateien in einem VB.NET-Projekt abzuspielen?

    MfG
    Afritus
    Gegenfrage: Wieso musst du die Datei unbedingt in deinem Programm abspielen? Tut es nicht auch der Standardplayer, der dafür registriert ist? Wenn der Typ nicht registriert sein sollte, kannst du immer noch einen Player im Programmverzeichnis suchen und starten. Das wäre bedeutend einfacher (es sei denn du willst einen eigenen Player schreiben - dann schreibe aber auch die Engine selbst und verwende nicht nur den AxWindowsMediaPlayer...).
    Gruß
    hal2000
    Muss nicht unbedingt das Programm sein, kann auch der Standardplayer machen. Allerdings muss mein Programm besagten Standardplayer steuern (!) können, und zwar nicht nur Öffnen/Schließen. Eine denkbare Möglichkeit wäre es, den Benutzer seinen Standardplayer (z.B. VLC) aussuchen zu lassen und das dann über Process.StartInfo() (wenn ich mich recht erinnere) zu steuern, falls VLC sowas unterstützt.
    Auf jeden Fall muss mein Programm die Wiedergabe einer bestimmten Datei veranlassen und auch das Springen zu einem bestimmten Zeitpunkt in diesem Video. Das wären die minimalen Anforderungen.

    Danke
    Offensichtlich erkennt Visual Studio das ActiveX-Plugin von VLC ohne Probleme (naja, wird noch immer mit asiatischen Zeichen angezeigt), wenn ich die 32bit-Version von VLC installiere. Sobald ich jedoch nur die 64bit-Version besitze, erkennt er das Plugin nicht mehr (ich habe ein 64bit-OS).

    LG
    [VB.NET] VLC Plugin v.2 Tutorial
    Vielleicht hilft dir das ja weiter.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ich weiß der Tread ist schon etwas älter,
    jedoch habe ich das gleiche Problem und möchte keinen neuen Thread aufmachen.

    Also Folgendes:
    Bisher hatte ich immer VLC in der 32-bit Version auf meinem 64-bit Rechner verwenden. (gab ja keine andere offizielle Version) Neulich dann gedacht warum nicht die 64-bit Version installieren, wo sie es jetzt doch gibt. (wenn auch Experimentel) Gesagt getan, ohne daran zu denken, dass ich ja in einem meiner VB-Projekte die axvlc.dll verwende. Also nach der Installation der 64-bit Version getestet, ob mein VB-Programm noch funktioniert.
    Fehlanzeige. (Objektverwis wurde nicht...) Also habe ich VLC 32-bit in Form einer zip gewonloadet und ins alte Verzeichnis (Programme (x86)\VideoLAN\...) kopiert in der Hoffnung das es jetz wieder geht. Wieder Fehlanzeige.
    Hab als nächstet Verschiedenstes probiert:
    - axvlc.dll manuell registriert
    - 32-bit normal installiert (parallel zu der 64-bit Version)
    - ...

    Nichts hat funktioniert.
    Also hab ich mir gedacht ich steige wieder komplett auf die 32-bit Version um. Alles deinstalliert (64 wie auch 32bit) und die 32bit neu installiert.

    Also VB 2010 Express neu gestartet und die Auswahl der Toolboxelemente geöffnen. Jedoch wurde jetzt nicht wie sonst unter COM-Steuerelementen die axvlc.dll in chinesischen (japanischen?) Schriftzeichen angezeigt. Also manuell per Durchsuchen hinzugefügt, was auch funktioniert hat. Jedoch erscheint nun beim Hinzufügen des Steuerelements zur Form folgender Fehler:


    Also wieder versucht manuell zu registrieren. Jedoch ohne Erfolg.
    Was mach ich Falsch? Was kann ich tun?