我编写了一个程序,该程序应与其他播放器一起使用,并检索有关当前播放歌曲的信息。该播放器是使用UWP编写的,因此Windows知道正在播放的曲目,因此在更改音量时我可以看到它的名称和其他信息:
https://i.imgur.com/nNy16Gs.png
我尝试过的事情:
var systemMediaControls = SystemMediaTransportControls.GetForCurrentView();
来自Get current playing track info from Microsoft Groove Music app
不幸的是,据我所知,它仅适用于本地媒体,可通过我的应用播放。
由于相同的原因,后台媒体播放器也没有帮助。
是否可以从Windows获得它?或者我应该直接读取该播放器的内存,对吗?
答案 0 :(得分:7)
我参加聚会很晚,但是我找到了一个可能的解决方案。
我使用https://www.nuget.org/packages/Microsoft.Windows.SDK.Contracts包在.NET Framework中使用Windows运行时API。
然后您要做的就是:
using System;
using Windows.Media.Control;
//
var gsmtcsm = GlobalSystemMediaTransportControlsSessionManager.RequestAsync().GetAwaiter().GetResult().GetCurrentSession();
var mediaProperties = gsmtcsm.TryGetMediaPropertiesAsync().GetAwaiter().GetResult();
Console.WriteLine("{0} - {1}", mediaProperties.Artist, mediaProperties.Title);
这将导致打印当前在系统媒体传输控件中的艺术家和歌曲的标题
最好的问候, 路卡
答案 1 :(得分:0)
音乐应用程序显示的屏幕控制栏不受系统控制,而是属于应用程序本身。
您无法通过其他音乐软件来播放音乐,就像无法从其他应用程序的应用程序文件夹中获取文件一样。
无论如何,如果您只想从操作系统中获取最新歌曲,则没有此类API。
最诚挚的问候。