Pergunta

Eu estou usando um wrapper para interagir com o Windows Media Player.

O que está usando um AxHost para envolver de alguma forma o jogador, para mim é tudo apenas mágica sob o capô ^^

Os AxHost.AttachInterfaces olhares como este

    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; 
...

Tudo está funcionando achado enquanto eu sediar este AxHost em um controle Windows Forms. Mas eu não posso ligar os eventos em um construtor.

Este, por exemplo, não funciona:

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

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

remote.Player é sempre nulo eo programa trava com um NullReferencesException.

O código na AttachInterfaces () é de alguma forma única executado após o formulário foi elaborado, ou depois de tudo o resto é feito.

Eu tentei ligar AttachInterfaces () com a mão, mas isso não quer trabalhar porque GetOcx () retorna nada.


Então, como posso instanciar o meu controle herdado-AxHost sem Windows Forms, para usá-lo, por exemplo, em um aplicativo de console?

Foi útil?

Solução

FYI:. Ninguém o impede de usar uma janela escondida em seu aplicativo de console

Você não vai ser capaz de hospedar o reprodutor de mídia em um aplicativo não-Windows - requer hospedagem. Se você quiser jogar alguma música que você pode usar o Gráficos de mídia para criar um gráfico que torna (execuções) seu arquivo de música -. Ele vai não requer qualquer hospedagem adicional

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top