Autor Beitrag
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: So 24.02.13 08:31 
Moin,

ich möchte die AXVLC.dll, die der VLC-Player zur Verfügung stellt, verwenden, möchte sie dabei aber nicht registrieren müssen.

Das alleinige Registrieren der dll hat scheinbar auch nicht gereicht, solange ich nicht den VLC-Player an sich installiere, zumindest kann ich die AXVLC.dll dann nicht mehr verwenden, da sie keine gültige COM-Komponente ist.

Das installieren des Players würde ich aber gerne vermeiden und am besten auch das registrieren der dll, da ich möchte, dass das Programm ohne Installation gleich nutzbar sein soll.



Als zweites Problem habe ich aber auch einen Compiler-Fehler, den ich nach stundenlanger Suche nicht in den Griff bekommen habe, da ich ja eigentlich die richtige API vom VLC-Player verwende - dachte ich zumindest, bis ich sie ausprobieren wollte und der Fehler kam.

Und zwar wollte ich nichts anderes tun, als den Konstruktor der Klasse AXVLC.VLCPlugin2Class aufrufen, erhielt vom Compiler aber diesen Fehler:

Zitat:
Der Interoptyp "AXVLC.VLCPlugin2Class" kann nicht eingebettet werden. Verwenden Sie stattdessen die entsprechende Schnittstelle.


Kann mir einer sagen, was ich falsch mache und wie ich das Problem löse?


Beste Grüße
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 25.02.13 17:19 
Hat niemand eine Idee, wie das funktionieren könnte?


Der VLC-Player ist ja kostenlos, daher mache ich nichts illegales, dass muss sich doch irgendwie lösen lassen.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 25.02.13 17:59 
Wenn Embedding nicht geht (warum auch immer) einfach mal versuchen das embedding auszuschalten. Dein Verweis auf die Interop Assembly sollte eine 'Embedded Interop Types' Eigenschaften haben die du testweise auf false setzen kann.
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 25.02.13 19:03 
Danke, jetzt kann ich zumindest auf die dll zugreifen.

Ob die dafür registriert sein muss, teste ich noch, aber ich glaube, ein HRESULT FAIL, den ich ein paar mal bekam, hängt genau damit zusammen.


Zwar bekomme ich jetzt keinen Compiler-Fehler und auch zur Laufzeit wird mir kein Fehler mehr angezeigt, aber ich höre kein Lied. Es passiert absolut gar nichts, das Programm stockt nur grob geschätzt eine viertel Sekunde, dann zeigt es mein testweise "Play" in der Konsole an und danach würde es aus gehen, wenn kein Console.Read(); da stehen würde:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
            AXVLC.VLCPlugin2Class axVLCPlugin1 = new AXVLC.VLCPlugin2Class();
            axVLCPlugin1.Volume = 100;
            axVLCPlugin1.Visible = true;
            axVLCPlugin1.addTarget(p, null, AXVLC.VLCPlaylistMode.VLCPlayListAppendAndGo, -666);
            Console.WriteLine("play");
            axVLCPlugin1.play();
            Console.Read();


Wie das ganze funktioniert habe ich von diesem Blog.

Das das Programm nach play() direkt aus geht, kann ich ja noch irgendwo verstehen. Es muss ja ein zweiter Thread geöffnet werden, damit der Rest der Software ungehindert der Musik weiter laufen kann und wenn dieser Thread nicht das Beenden der Software blockiert, ist das auch kein Problem, aber warum kann ich nichts hören?
Wie kann ich denn im Visual Studio die aktuell laufenden Threads überwachen?



Kennt sich vielleicht jemand mit der VLC-API aus, oder weiß, wo ich eine taugliche Dokumentation oder Erklärung finde? Ich hab da nicht viel gefunden, oder bin einfach nur blind.


Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 25.02.13 19:10 
Zitat:
Das das Programm nach play() direkt aus geht, kann ich ja noch irgendwo verstehen. Es muss ja ein zweiter Thread geöffnet werden, damit der Rest der Software ungehindert der Musik weiter laufen kann und wenn dieser Thread nicht das Beenden der Software blockiert, ist das auch kein Problem, aber warum kann ich nichts hören?
Wie kann ich denn im Visual Studio die aktuell laufenden Threads überwachen?


Ich vermute mal da wird eine MessageLoop benötigt die du aber nicht hast (Consolenanwendung?). Versuch mal ein Winforms Project oder bau dir zumindest ein Application.Run ein damit du eine MessageLoop bekommst.
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 25.02.13 19:42 
Ja, war eine Konsolen-Anwendung, aber auch als Forms-Anwendung macht es keinen Unterschied :(


Hab den Code von Oben in ein Button_Click-Event gelegt und mir darin auch mal den Form-Namen ändern lassen, damit ich sehe, wann der Code ausgeführt wurde. Wieder das gleiche, eine viertel Sekunde nach dem Klick ändert sich der Name, aber es bleibt trotzdem stumm.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 25.02.13 20:37 
Da gehen mir die Ideen aus. Hast du mal die Alternativen zum ActiveX Control gecheckt?

Auf der Homepage gibt es das hier. Und einen .Net Wrapper hier.

Edit: 2.ter Link vlcdotnet.codeplex.com/


Zuletzt bearbeitet von Ralf Jansen am Mo 25.02.13 21:39, insgesamt 1-mal bearbeitet
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 25.02.13 21:38 
Kann es sein, dass das eigentlich zwei verschiedene Links sein sollten? ^^