Como interagir com o Windows Media Player em C#
Pergunta
Estou procurando uma maneira de interagir com uma versão completa autônoma do Windows Media Player.
Principalmente eu preciso saber o caminho da faixa atualmente reproduzida.
O iTunes SDK torna isso muito fácil, mas infelizmente não há nenhuma maneira de fazer isso com o Windows Media Player, pelo menos não em .Net (C#) sem qualquer uso pesado de pinvoke, com o qual não me sinto muito confortável.
Obrigado
Só para esclarecer:Não quero incorporar uma nova instância do Windows Media Player em meu aplicativo, mas sim controlar/ler a versão completa "real" do Windows Media Player, iniciada separadamente pelo usuário
Solução
eu tive isso https://social.msdn.microsoft.com/Forums/vstudio/en-US/dbd43d7e-f3a6-4087-be06-df17e76b635d/windows-media-player-remoting-in-c?forum=clr nos meus favoritos, mas NÃO testei de qualquer maneira.Apenas um ponteiro na direção certa.Não é nada oficial e exigirá um pouco de pesquisa, mas você deve obter um wrapper bastante simples (que ainda usará o PInvoke nos bastidores - mas você não o verá) no Windows Media Player.
Espero que ajude.
Ah, eu entendi mal.Achei que você estava falando sobre como controlar a instância do Windows Media Player em execução.Se você mesmo hospeda o Windows Media Player, o WMPLib é certamente a melhor solução.
Outras dicas
Basta adicionar uma referência a wmp.dll (\windows\system32\wmp.dll)
using WMPLib;
E então você pode instanciar um media player
var Player = new WindowsMediaPlayer();
// Load a playlist or file and then get the title
var title = Player.controls.currentItem.name;
Ver Criando o controle do Windows Media Player programaticamente Para maiores informações
Para a comunicação remota do Windows Media Player, você pode usar a interface IWMPRemoteMediaServices para controlar o Windows Media Player independente.E você deve ser capaz de ler todas as informações que deseja, como título ou nome de arquivo, do objeto do player WMP.Infelizmente não há código smaple C# no SDK incluído.Você pode obter os arquivos aqui: http://d.hatena.ne.jp/punidama/20080227 Procure o arquivo wmpremote.zip originalmente é daqui: http://blogs.msdn.com/ericgu/archive/2005/06/22/431783.aspx
Então você deve converter para o objeto WindowsMediaPlayer:RemotedWindowsMediaPlayer rm = new RemotedWindowsMediaPlayer();WMPLib.WindowsMediaPlayer myPlayer = this.GetOcx() como WMPLib.WindowsMediaPlayer;
e pronto..
A melhor informação que vi sobre a interação com o Windows Media Player é esta artigo escrito por Stephen Toub.
Ele lista um monte de maneiras diferentes de reproduzir arquivos dvr-ms (embora não importa qual formato eles sejam para isso).A parte que possivelmente é do seu interesse é sobre o uso de um controle ActiveX do Media Player, que você pode adicionar à caixa de ferramentas do visual Studio clicando com o botão direito e adicionando o controle ActiveX COM do Windows Media Player.Você pode então incorporar o player ao seu aplicativo e acessar várias propriedades do Media Player, como o URL:
WMPplayer.URL = stringPathToFile;
Esta solução possivelmente não é o que você deseja porque está iniciando uma nova instância do Media Player (até onde eu sei), mas pode indicar a direção certa.