2009-04-24 31 views
11

Estoy tratando de controlar el VLC Media Player desde C#. Intenté obtener un control en la ventana con el comando FindWindow() de .Net, pero cuando descubrí que el nombre de la ventana cambia cada vez que se reproduce un archivo. El mayor problema que tengo es enviar wm_commands a vlc. Este enfoque funcionó con Winamp y Windows Media Player pero con VLC parece que no funcionará.VLC control remoto desde C#

He leído que VLC se puede controlar desde un navegador, pero no quiero eso ... he visto en su configuración que tiene algunas teclas de acceso rápido que se pueden llamar ... pero se pueden cambiar y si los llamo desde mi código de alguna manera ... y el usuario cambia them..bummer ...

yo soy un poco de ayuda poco stuck..any sería fantástico ... Sorin

+0

¿Cuál es su objetivo aquí? Conducir VLC? Integrar en una aplicación? –

+0

hola, quiero controlar VLC..like pulsando un botón de detención en mi aplicación y el reproductor VLC se detiene. El VLC no está integrado en mi aplicación ... mi aplicación será como un control remoto ... libvlc un aspecto libvlc-sharp como una solución ... tengo que mirar en profundidad ... –

+0

hola sambo, la idea era controlar (unidad) VLC, no integrándola en otra aplicación. VLC debería ejecutarse normalmente en Windows y recibir comandos de WM desde una aplicación C#. –

Respuesta

9

Tengo un código que es capaz de control it using sockets en el RC interface. Esto funcionó hasta cierto punto, pero tiene muchas peculiaridades. ir a pantalla completa parece no hacer nada durante unos segundos después de invocar el juego. En general, funciona de alguna manera.

Las otras opciones son:

escribir un filtro de DirectDraw (muy duro), pero una vez hecho esto VLC puede usarse en lugar de o junto con FFMPEG. El código existente que controla el reproductor multimedia podría usar vlc.

Escribir un contenedor de interoperabilidad para libvlc, recientemente al equipo de VLC divide a cabo libvlccore de libvlc así a lo mejor de mi conocimiento toda la interop está fuera de fecha. Una vez que escribe un contenedor, puede incrustar vlc en una aplicación de Windows. (Si es necesario apoyar x64 necesita compilar estas bibliotecas bajo x64.

Mire a través del código de VLC y averiguar si hay una manera de enviar estas ventanas mensajes.

EDITARThis appears que han llegado esta semana.

+0

Esta técnica requiere que el usuario inicie VLC con algunos indicadores (a través de la línea de comando me corrige si estoy equivocado). También estoy enfrentando este problema, ¿qué ocurre si mi usuario ha iniciado VLC desde Windows? No puedo pedirle a mi usuario que ingrese al modo RC. ¿VLC no proporciona ninguna otra manera de controlarse a sí mismo? Al igual que la interfaz COM en Windows Media Player o iTunes? – MaX

+0

MaX Creo que hay una libvlc pero no es administrada –

2

usted tiene miró libvlc

Es posible que pueda envolver eso en una biblioteca e interactuar con VLC a través de eso.

3

Como mencionó Eoin, libvlc se puede utilizar para interactuar con VLC. Como usuario de C#, es posible que desee probar los enlaces .NET que ofrece el proyecto libvlc-sharp.

Editar: Parece que este proyecto no se ha mantenido durante años. Dejaré el enlace de todos modos, en caso de que quiera echarle un vistazo y tal vez poner en uso alguna de sus fuentes.

+1

esta biblioteca estaba desactualizada hace 3 días –

+0

Más como 3 años ;-) Pero de todos modos, la publicación se actualizó con advertencia. –

+0

No, creo que Sam quiere decir que dado que el equipo dividió la base de código en bibliotecas separadas, la envoltura de interoperabilidad existente ya no es funcional. Necesitaría un nuevo contenedor para las funciones en la biblioteca libvlc. –

0

Si lo que está tratando de hacer es controlar un ejecutable de la ejecución previa, echa un vistazo a la clase Process para enumerar todos los current processes o hacerlo por name. Compruebe el ejecutable para que coincida con vlc.exe. a continuación, puede obtener un identificador a la ventana principal y hacer un poco de P/invocar a envía mensajes como lo haces con tus otros ejecutables. Esto obviamente está plagado de problemas potenciales, como por ejemplo si hay cambios en las tomas de teclado.

+0

Este es un enfoque realmente arriesgado ya que no se puede seguir el estado de la reproducción con precisión. –

+0

Estoy de acuerdo. Solo estaba dando una opción sobre cómo encontrar la ventana/proceso. –

+0

Además, vea mi código, que muestra cómo encontrar el proceso hijo vlc. Es un poco más complicado que solo buscar por nombre –

Cuestiones relacionadas