【发布时间】:2017-09-25 18:46:16
【问题描述】:
我想在我自己的应用中获取 Microsoft Groove 应用中当前播放曲目的曲目信息。我说的是 Groove APP,而不是 REST Api。
我的第一个方法是尝试从我自己的进程(应用程序)中获取Windows.Media.Playback.BackgroundMediaPlayer(现在已过时)信息。 Dev Center Documentation 中有关 Windows.Media.Playback.BackgroundMediaPlayer 的更多信息
我们的想法是从BackgroundMediaPlayer.Current 获取信息,但这仅适用于同一进程。再说一遍,无论如何这已经过时了,现在 MS 建议使用 Windows.Media.Playback.MediaPlayer 类,但这也只能在使用 MediaPlayer 的同一进程中访问。
第二种方法是从System Media Transport Controls 获取信息。
对于那些不熟悉 SMTC 的人,这就是我所说的(例如,当您从键盘跳过/播放/暂停时的小弹出窗口):
上面链接的关于 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# 应用程序中调用它。
文档说这包含在 Windows 10 SDK 中,但我不知道在哪里。
也许我完全错了,也许我不能在 C# 中使用它(因为它是 C++ 接口)。但我的想法是,这必须编译成一个库,我可以通过使用 pInvoke 来使用它。
如果有人可以向我解释这一点,将不胜感激。
【问题讨论】:
-
@apocalypse,再说一遍,我不是在谈论 Groove REST API,请再次阅读我的帖子。我说的是当前播放的曲目信息,Groove REST API 对此一无所知。 REST API 仅用于查找有关 Groove 库中任何歌曲的信息,而不是您正在 Groove 应用程序中播放的歌曲的曲目信息。
-
你最后找到办法了吗?
-
聚会迟到了,但我在这里回答了这个问题:stackoverflow.com/a/63099881/13997827
标签: c# audio-player groove