2017-09-25 183 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」命名空間。

相關問題