Control remoto del Reproductor de Windows Media

[La característica asociada a esta página, Reproductor multimedia de Windows SDK, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de Reproductor multimedia de Windows SDK, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Al insertar el control Reproductor multimedia de Windows en un programa de C++, puede usarlo como extensión remota del modo completo del Reproductor. Esto se denomina "comunicación remota" el control Reproductor multimedia de Windows, y le permite proporcionar todas las características del modo completo Player sin implementarlas usted mismo.

Cuando se controla el control remoto, comparte el mismo motor de reproducción que el modo completo del Reproductor y los usuarios pueden cambiar entre el modo incrustado (el estado "acoplado") y el modo completo (el estado "desacopado") mientras la reproducción multimedia digital continúa sin interrupciones.

Habilitación de la inserción remota

Para habilitar la inserción remota del control Reproductor multimedia de Windows, el programa debe implementar las interfaces IServiceProvider e IWMPRemoteMediaServices. IServiceProvider es una interfaz estándar del Modelo de objetos componentes (COM) con un único método denominado QueryService. Reproductor multimedia de Windows llama a este método para recuperar un puntero a una interfaz IWMPRemoteMediaServices.

IWMPRemoteMediaServices tiene varios métodos , pero solo dos de ellos son directamente relevantes para la comunicación remota. En GetApplicationName, se devuelve el nombre del programa, que Reproductor multimedia de Windows agrega a la lista Cambiar a otro programa en el menú Ver. En GetServiceType, se indica el modo de inserción del control devolviendo un valor de "Remote" o "Local". Si se establece correctamente una conexión remota, el método get_isRemote de la interfaz IWMPPlayer4 devuelve true.

Especificar una tienda en línea exclusiva

Con Reproductor multimedia de Windows 11, una aplicación que inserta el control Player de forma remota puede especificar una tienda en línea exclusiva. En ese caso, el selector de servicios de Reproductor multimedia de Windows está deshabilitado y solo la tienda en línea especificada está disponible para el usuario. Para obtener información detallada sobre cómo especificar una tienda en línea exclusiva, consulta Exclusive Online Stores.

Acoplamiento y desacoplación

La interfaz IWMPPlayer4 también proporciona acceso a la interfaz IWMPPlayerApplication a través del método get_playerApplication . Usa IWMPPlayerApplication para cambiar entre los estados acoplados y no acoplados y para determinar el estado acoplado actual y la ubicación de la visualización o vídeo.

El método IWMPPlayerApplication::switchToPlayerApplication deshace el control abriendo el modo completo de Reproductor multimedia de Windows y transfiriendo el vídeo o visualización al panel Reproducción ahora. El método IWMPPlayerApplication::switchToControl acopla el control transfiriendo el vídeo o visualización a tu programa y cerrando el modo completo del Reproductor, si está abierto. El control también se puede acoplar seleccionando un programa de la lista Cambiar a otro programa o cerrando el modo completo del Reproductor. En ambos casos, los medios digitales que se reproducen continúan sin interrupciones.

Transferencia de la pantalla de vídeo o visualización

Cuando varios programas con controles Reproductor multimedia de Windows insertados y remotos se ejecutan simultáneamente, todos los controles comparten el mismo motor de reproducción. También comparten la misma instancia del modo completo del Reproductor en el estado desacoplar. Sin embargo, en el estado acoplado, solo un control puede mostrar el vídeo o la visualización. En el estado desacoplar, solo el modo completo del Reproductor muestra el vídeo o la visualización. El método switchToControl funciona en los estados acoplados y no acoplados y transferirá la visualización de vídeo o visualización a cualquier programa que la llame.

La única diferencia entre los estados acoplados y no acoplados es la presencia del modo completo de Reproductor multimedia de Windows y su propiedad de la pantalla de vídeo o visualización. En el estado desacoplar, todos los controles remotos incrustados que se ejecutan actualmente siguen siendo visibles y sus interfaces de usuario siguen siendo totalmente funcionales. Sin embargo, si hay una ventana de vídeo o visualización, está vacía. En el estado acoplado, solo uno de los controles integrados y remotos posee la pantalla, pero todas las interfaces de usuario siguen funcionando.

Ocultar o cambiar el control en estado desacoplar

Debe proporcionar su propia implementación si desea ocultar o modificar la interfaz de usuario de un control incrustado en el estado desacopado o cuando el programa no posee la pantalla. Puede realizar estas modificaciones al acoplar y desacoplar el control, o puede realizarlas en respuesta a Reproductor multimedia de Windows eventos. Dado que el Reproductor se puede acoplar a través de la opción de menú Cambiar a otro programa , normalmente es mejor proporcionar esta funcionalidad en respuesta a los eventos.

Puedes implementar controladores de eventos para los eventos SwitchedToPlayerApplication y SwitchedToControl , o puedes implementar un único controlador de eventos para el evento PlayerDockedStateChange . En este último caso, puedes determinar el estado acoplado llamando a IWMPPlayerApplication::get_playerDocked. En ambos casos, usa IWMPPlayerApplication::get_hasDisplay para determinar si tu programa posee la pantalla de vídeo o visualización.

Volver a establecer una conexión remota

En determinadas circunstancias, se producirá un error en la conexión entre un control remoto, incrustado y el reproductor independiente, lo que invalidará los punteros a las interfaces Reproductor multimedia de Windows. Reproductor multimedia de Windows intentará volver a conectarse automáticamente y activará el evento PlayerReconnect para indicar este intento. Aunque la reconexión es automática, debes proporcionar un controlador de eventos para este evento si quieres liberar los punteros no válidos y recuperar otros nuevos para que puedas acceder al Reproductor independiente a través de la nueva conexión.

Controlar el reproductor desacoplado

Todas las instancias remotas del control Reproductor multimedia de Windows pueden manipular el modo completo del Reproductor independientemente del estado acoplado. Sin embargo, las características que no tienen relevancia para el modo completo del Reproductor se omiten hasta que se acopla el control Reproductor multimedia de Windows. Esto incluye las propiedades de IWMPPlayer y las interfaces derivadas, como enabled, enableContextMenu, uiMode y windowlessVideo.

Cuadros de diálogo de error

Desde una instancia de control de Reproductor multimedia de Windows remota, la configuración.La propiedad enableErrorDialogs se comporta de forma específica. Se aplican las reglas siguientes:

  • Cuando Reproductor multimedia de Windows se desacopla (la interfaz de usuario de Reproductor multimedia de Windows está visible), la propiedad enableErrorDialogs se omite y el Reproductor controla los cuadros de diálogo de error.
  • Cuando se acopla Reproductor multimedia de Windows, el valor especificado por cada instancia remota del control para enableErrorDialogs solo se aplica a la instancia de control individual. Es decir, si una instancia de control determinada especifica un valor de "true" para enableErrorDialogs, solo esa instancia mostrará un cuadro de diálogo cuando se produzca un error si todas las demás instancias del control han especificado un valor de "false".

Comunicación remota en segundo plano

Debe evitar mantener una instancia remota del Reproductor en ejecución en segundo plano durante los momentos en que el control no está en uso. Dado que la instancia de control del Reproductor remoto comparte su motor de reproducción con el reproductor en modo completo, mantener una instancia en segundo plano en ejecución puede provocar un comportamiento inesperado. Por ejemplo, el usuario podría cerrar el reproductor en modo completo mientras se reproduce un archivo. El usuario esperaría que la reproducción de archivos se detenga completamente cuando se cierre el Reproductor, pero es posible que el audio siga reproduciéndose porque el motor de reproducción sigue activo.

Ejemplos

El paquete de instalación del SDK de Reproductor multimedia de Windows instala ejemplos que muestran la comunicación remota. Consulte los ejemplos de RemoteSkin y WMPML para obtener más información.

Muestras

Usar el control Reproductor multimedia de Windows en un programa de C++