我想在我自己的应用程序中获取 Microsoft Groove 应用程序中当前播放曲目的曲目信息。我说的是 Groove APP,而不是 REST Api。
我的第一种方法是尝试Windows.Media.Playback.BackgroundMediaPlayer
从我自己的进程(应用程序)中获取(现在已经过时的)信息。有关开发中心文档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 来使用它。
如果有人可以向我解释这一点,将不胜感激。