C#触发windows 10媒体通知

Posted

技术标签:

【中文标题】C#触发windows 10媒体通知【英文标题】:C# trigger windows 10 media notification 【发布时间】:2017-12-18 05:42:28 【问题描述】:

如何将这些 Windows 10“媒体通知”实现到 C# WPF 桌面应用程序中?

【问题讨论】:

我也问过同样的问题。我已经在互联网上进行了很多研究,因此我完全没有发现任何东西(我的意思是不需要我花费数周时间才能完成的解决方案)我放弃了。我真的很好奇是否有人会有解决方案。 @L.Guthardt 真的! microsoft 自己有关于 toast 通知的非常详细的文档,但对这些媒体通知只字不提 Tbh 我认为你必须是个极客,并且需要对 Windows 本身有非常深入的了解才能操作它们的音量滑块。 是的,Spotify 是我所知道的唯一能做类似事情的应用程序。我的意思是有任何简单的教程可以为 UWP 做这件事,但一方面我不想要 UWP,另一方面我不知道如何将通知绑定到 Windows 音量滑块。 让我们continue this discussion in chat。 【参考方案1】:

你说的是SystemMediaTransportControls 类。它在Microsoft Docs 上描述了它的用法。

但是,此 API 是为 UWP 设计的,因此要使其在 WPF 等常规桌面应用程序中工作需要做更多工作。 *** 上的 some answers 描述了如何执行此操作,但也有一些来自 Microsoft 的更新的官方 documentation 关于如何使用这些 WinRT API。

很遗憾,桌面应用 [5] 不直接支持 System Media Transport Controls API,因此它变得有点复杂,如本文所述 [6]。


简而言之,对于 .NET 5:

    安装您喜欢的版本的 Windows 10 SDK(例如通过 VS 安装程序);

    将目标框架更改为您安装的 SDK 版本,例如net5.0-windows10.0.19041.0.

    使用 [6] 中所述的 API 互操作来获取实例。

    对于 SMTP,您需要使用 Windows.Media.SystemMediaTransportControlsInterop。这需要窗口句柄,您可以在 WPF 中使用WindowInteropHelper 获得。

    使用 [2] 中所述的 SystemMediaTransportControls 实例。

【讨论】:

以上是关于C#触发windows 10媒体通知的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UWP 应用检测由另一个应用触发的 Windows 10 Toast 通知

webkit中的错误? Windows 媒体播放器运行时鼠标移动事件连续触发

适用于 Windows 10 的通用应用程序。如何触发后台任务?

如何获取 Windows 通知服务?

C# 向用户显示 Windows 服务更新通知

Safari:媒体查询未按预期宽度触发