2017-09-25 179 views
4

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

我的第一种方法是尝试从我自己的进程(应用程序)获取Windows.Media.Playback.BackgroundMediaPlayer(现在已过时)的信息。有关Windows.Media.Playback.BackgroundMediaPlayer中的Dev Center Documentation的更多信息

想法是从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),所以我可以(也许)pInvoke这在我的C#应用​​程序。

该文档说,这是包含在Windows 10 SDK中,但我找不到在哪里。也许我完全错了,也许我不能在C#中使用它(因为它是一个C++接口)。但我的想法是,这必须编译到一个库中,我可以通过使用pInvoke来使用它。

如果有人能向我解释这一点,我们将非常感激。

+0

Google:“groove api c#” – apocalypse

+0

@apocalypse,再说一遍,我不是在谈论Groove REST API,请再次阅读我的文章。我正在谈论当前正在播放的曲目信息,Groove REST API对此一无所知。 REST API仅查找有关Groove库中* any *歌曲的信息,而不是您在Groove应用中播放的歌曲的曲目信息。 –

回答

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项目文件。

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

相关问题