c# - 与 "system-wide"媒体播放器交互

标签 c# windows microsoft-metro media-player windows-10

我想为 Windows 10 开发一个音乐应用程序,我对音量栏旁边的 Groove Music 提供的界面很好奇。我已经尝试使用谷歌搜索来获取有关它的更多信息,但我没有取得任何成功。当我在 Groove Music 中播放音乐并提高或降低音量时,当前歌曲的名称以及艺术家和专辑插图会与音量指示器旁边的音乐控件一起显示:

screen shot

我想知道如何在我自己的应用程序中创建此对话框以及我必须研究哪些 Windows API。

最佳答案

尽管 @Stamos 已经给出了很好的答案,但我还是要添加我的意见,因为我发现实际上可以从 native Windows 应用程序(不仅是通用应用程序)使用 SystemMediaTransportControls

首先,它仍然需要引用通用 winmd 文件,因此它只能在 Win10 上运行。它们将位于 10 sdk 中,您可以通过常规的 Add Reference -> Browse 添加它们,但您可能需要将对话框右下角的过滤器更改为“所有文件”他们出现。它们位于我的电脑上:

  • Windows.Foundation.UniversalApiContract:
    C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\1.0.0.0\Windows.Foundation。 UniversalApiContract.winmd
  • Windows.Foundation.FoundationContract:
    C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.FoundationContract\2.0.0.0\Windows.Foundation。 FoundationContract.winmd

获得必要的引用后,您会遇到另一个问题 - 您无法通过通常的 SystemMediaTransportControls.GetForCurrentView(); 访问传输控件(它会抛出异常)因为您实际上并没有普遍的看法。使用以下方法可以缓解这种情况:

SystemMediaTransportControls systemControls =
    BackgroundMediaPlayer.Current.SystemMediaTransportControls;

在此之后,您可以随意使用任何在线示例或 Stamos 的答案。

关于c# - 与 "system-wide"媒体播放器交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464317/

相关文章:

c# - 有没有办法在设计器中使用自定义控件并避免 GAC?

windows - WinINET 是可重入的吗?

wpf - 在资源字典中的样式中绑定(bind) Setter 值

c# - Windows服务应用程序安装

c# - Asp.net C# 的 PayPal RestApi 身份服务不返回正确的 url

CleanMem 工具 - 自动释放 Windows 上分配的内存?

c++ - 在 MFC 中,为什么我需要创建 CWinApp 的全局实例?

c# - WPF 项目不支持 Canvas ?

c# - 在 variablesizedwrapgrid 代码后面设置 TextBlock 的宽度和高度无法正确显示

c# - 将 WeakEventManager 与静态事件一起使用