从Microsoft Groove音乐应用程序

时间:2017-09-25 18:46:17

标签: c# audio-player groove

我想在我自己的应用中获取Microsoft Groove应用中当前播放曲目的曲目信息。我在谈论Groove APP而不是REST Api。

我的第一个方法是尝试从我自己的进程(app)获取Windows.Media.Playback.BackgroundMediaPlayer(现已过时)信息。有关Dev Center Documentation

Windows.Media.Playback.BackgroundMediaPlayer的更多信息

我们的想法是从BackgroundMediaPlayer.Current获取信息,但这仅适用于同一过程。而且,无论如何,这已经过时了,现在MS建议使用Windows.Media.Playback.MediaPlayer类,但这也只能在使用MediaPlayer的同一过程中访问。

第二种方法是从System Media Transport Controls获取信息。

对于那些不熟悉SMTC的人,这就是我所说的(例如,当您从键盘跳过/播放/暂停时的小弹出窗口):

enter image description here

上面关于SMTC的文章展示了如何在你的应用程序中使用这些控件,我想做的事情基本上恰恰相反。

有没有人有你认为可行的其他方法?

修改

所以我发现可以使用原生ISystemMediaTransportControlsInterop接口:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn892315(v=vs.85).aspx

更确切地说是ISystemMediaTransportControlsInterop::GetForWindow方法:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn892316(v=vs.85).aspx

但是我不知道如何调用这个方法,使用什么库(dll)所以我可以(也许)在我的C#app中调用它。

文档说这包含在Windows 10 SDK中,但我找不到它。

也许我完全错了,也许我不能在C#中使用它(因为它是一个C ++接口)。但我的想法是,这必须编译成一个库,我可以使用pInvoke来使用它。

如果有人能向我解释这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

https://docs.microsoft.com/en-us/uwp/api/Windows.Media.SystemMediaTransportControls

SystemMediaTransportControls _control = SystemMediaTransportControls.GetForCurrentView();

Windows.Foundation.UniversalApiContract.winmd是您获得SMTC课程访问权限所需的合同。

参考这个,你应该能够获得控制权。

<Reference Include="Windows.Foundation.UniversalApiContract"> <HintPath>C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\3‌​.0.0.0\Windows.Found‌​ation.UniversalApiCo‌​ntract.winmd</HintPa‌​th> </Reference>

将它添加到visual studio中的项目文件中。

我希望这是您正在寻找的,无论哪种方式,这将允许您访问&#34; Windows.Media&#34;命名空间。