2009-04-24 13 views
11

ich versuche, den VLC Media Player von C# zu steuern. Ich habe versucht, das Fenster mit dem FindWindow() - Befehl von .Net zu bekommen, aber wie ich herausgefunden habe, ändert sich der Name des Fensters jedes Mal, wenn eine Datei abgespielt wird. Das größte Problem, das ich habe, ist das Senden von wm_commands an vlc.Dieser Ansatz funktionierte mit Winamp und Windows Media Player, aber mit VLC scheint es, dass es nicht funktioniert.VLC Fernbedienung von C#

Ich lese, dass VLC von einem Browser gesteuert werden kann, aber ich nicht whant das ... Ich habe in seinen Einstellungen gesehen, dass es einige Hot Keys hat, die aufgerufen werden können..aber sie können geändert werden und wenn ich nenne sie von meinem Code irgendwie ... und der Benutzer ändert them..bummer ...

ich bin ein wenig stuck..any Hilfe wäre fantastisch ... Sorin

+0

Was ist Ihr Ziel hier? Laufwerk VLC? In eine Anwendung integrieren? –

+0

hallo, ich möchte VLC steuern .. als würde ich eine Stopp-Taste in meiner App drücken und der VLC Player stoppt. Der VLC ist nicht in meine App integriert. Meine App wird wie eine Fernbedienung sein ... libvlc und libvlc-sharp aussehen wie eine Lösung..ich muss in die Tiefe schauen .. –

+0

Hallo Sambo, die Idee war zu kontrollieren (Laufwerk) VLC, nicht in einer anderen App zu integrieren. VLC sollte normal in Windows ausgeführt werden und WM-Befehle von einer C# -App erhalten. –

Antwort

9

Ich habe einen Code, der control it using sockets auf der RC interface ist. Dies hat zu einem gewissen Grad funktioniert, hat aber viele Macken. Gehe zum Vollbildmodus scheint für ein paar Sekunden nichts zu tun, nachdem das Spiel aufgerufen wurde. Insgesamt funktioniert es irgendwie.

Die anderen Optionen sind:

ein DirectDraw Filter schreiben (sehr hart), aber sobald diese VLC verwendet anstelle von oder mit FFMPEG in Verbindung sein kann, ist getan. Vorhandener Code, der den Media Player steuert, könnte vlc verwenden.

eine Interop-Wrapper schreiben für libvlc, vor kurzem trennte sich die VLC-Team libvlccore von libvlc, so zum besten meines Wissens alle interop veraltet ist. Sobald Sie einen Wrapper schreiben, können Sie vlc in eine Windows App einbetten. (Wenn Sie X 64 unterstützen müssen Sie müssen diese Bibliotheken unter x64 kompilieren.

Schauen Sie durch den VLC-Code und herauszufinden, ob es einen Weg gibt, diese Fenster-Nachrichten zu senden.

EDITThis appears zu kommen haben aus dieser Woche.

+0

Diese Technik erfordert Benutzer VLC mit einigen Flags (über Befehlszeile korrigieren mich, wenn ich falsch liege). Ich stehe auch dieses Problem gegenüber, wenn mein Benutzer VLC von Windows gestartet hat. Ich kann meinen Benutzer nicht bitten, in den RC-Modus zu wechseln. Bietet VLC keine andere Möglichkeit, sich selbst zu kontrollieren? Wie COM-Schnittstelle in Windows Media Player oder iTunes? – MaX

+0

MaX Ich denke, es gibt eine libvlc, aber es ist nicht verwaltet –

2

Sie haben Blick auf libvlc

Sie könnten in der Lage sein, das in einer Bibliothek einzupacken und damit mit VLC zu interagieren.

3

Wie Eoin erwähnt, kann libvlc verwendet werden, um mit VLC zu interagieren. Als C# -Benutzer möchten Sie vielleicht die .NET-Bindungen ausprobieren, die vom libvlc-sharp-Projekt angeboten werden.

Bearbeiten: Scheint so, als ob dieses Projekt seit Jahren nicht mehr gepflegt wurde. Ich werde den Link trotzdem verlassen, falls Sie einen Blick darauf werfen und einen Teil seiner Quelle verwenden möchten.

+1

diese Bibliothek war veraltet vor 3 Tagen –

+0

Mehr wie 3 Jahre ;-) Aber egal, Post aktualisiert mit Warnung. –

+0

Nein, ich denke, Sam bedeutet, dass der bestehende Interop-Wrapper nicht mehr funktionsfähig ist, da das Team die Codebasis in separate Bibliotheken aufgeteilt hat. Sie benötigen einen neuen Wrapper für die Funktionen in der libvlc-Bibliothek. –

0

Wenn das, was Sie versuchen, eine zuvor ausführbare zu tun zu steuern ist, überprüfen die Process Klasse aufzuzählen durch alle current processes oder tun es durch name. die ausführbare Datei überprüfen vlc.exe übereinstimmen. Sie können dann erhalten ein Handle zum Hauptfenster und machen Sie einige P/Invoke zu Sende Nachrichten, wie du es mit deinen anderen ausführbaren Dateien machst. Dies ist offensichtlich mit möglichen Problemen wie z. B. wenn es Änderungen an den Tastatur-Shotcuts gibt, gespickt.

+0

Dies ist ein sehr riskantes Vorgehen, da Sie den Wiedergabestatus nicht genau verfolgen können. –

+0

stimme ich zu. Ich habe nur eine Option gegeben, wie man das Fenster/den Prozess findet. –

+0

Siehe auch meinen Code, es zeigt, wie Sie den vlc Kindprozess finden. Es ist ein bisschen schwieriger als nur nach Namen zu suchen –