Pregunta

Estoy usando un Contenedor COM para interactuar con el Reproductor de Windows Media.

El es el uso de un AxHost manera de envolver el jugador, para mí es todo magia bajo el capó^^

El AxHost.AttachInterfaces se parece a esto

    protected override void AttachInterfaces() 
    {
        try 
        {   
            //Get the IOleObject for Windows Media Player.
            IOleObject oleObject = this.GetOcx() as IOleObject;

            //Set the Client Site for the WMP control.
            oleObject.SetClientSite(this as IOleClientSite);

            Player = this.GetOcx() as WMPLib.WindowsMediaPlayer; 
...

Todo es encontrar trabajo mientras yo anfitrión de este AxHost en un control de Formularios Windows forms.Pero no puedo conectar los eventos en un constructor.

Este, por ejemplo, no funciona:

    public WMPMediaRating()
    {
        var remote = new WMPRemote.RemotedWindowsMediaPlayer();
        _WMP = remote.Player;

        _WMP.MediaChange += new _WMPOCXEvents_MediaChangeEventHandler(_WMP_MediaChange);
    }

el control remoto.Jugador siempre es null y el programa se bloquea con un NullReferencesException.

El código en AttachInterfaces() es de alguna manera sólo se ejecuta después de que el Formulario se ha elaborado, o después todo lo demás está hecho.

He intentado llamar AttachInterfaces() con la mano, pero que no funciona bien, ya GetOcx() no devuelve nada.


Entonces, ¿cómo puedo crear instancias de mi AxHost heredado sin control de Formularios Windows forms, para utilizar, por ejemplo, en una aplicación de consola?

¿Fue útil?

Solución

FYI:nadie te impide el uso de una ventana oculta en su aplicación de consola.

Usted no será capaz de albergar el reproductor multimedia en una aplicación para windows no - se requiere de hosting.Si quieres jugar un poco de música puede utilizar los Medios de comunicación Gráficos para crear un gráfico que representa (obras de teatro), el archivo de música - no se requiere ningún extra de alojamiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top