在 Windows 上可靠地暂停所有正在播放的媒体
Posted
技术标签:
【中文标题】在 Windows 上可靠地暂停所有正在播放的媒体【英文标题】:Reliably pause all playing media on Windows 【发布时间】:2019-07-06 07:40:19 【问题描述】:我正在为 KDE Connect 设置一个插件,当我接到电话时,我会暂停任何正在播放的媒体。对于这个插件的 Windows 版本,我目前正在使用 VK_MEDIA_PLAY_PAUSE。是否有一些指令我可以用来简单地暂停或简单地播放媒体?也就是说,不是具有“仅一种”两种行为的切换指令? 如果没有,是否有其他方法可以可靠地确定我的系统上是否正在播放任何媒体?
我已阅读 Media Play/Pause Simulation 。但在我的用例中切换不可靠。
【问题讨论】:
【参考方案1】:WM_APPCOMMAND
有 APPCOMMAND_MEDIA_PAUSE
。如果您知道它的HWND
,请直接将其发送给玩家,或者将其发送给您自己并让DefWindowProc
将其转换为外壳挂钩事件。
【讨论】:
我需要使用该解决方案来暂停我系统上的任何播放媒体,我的软件本身不播放任何媒体,但我想控制所有其他播放媒体并在可能的情况下暂停它们。你能帮我写一个短代码sn-p吗? 似乎 DefWindowProc 用于“处理”特定事件。我已经在处理呼叫部分了,我只需要一个可靠的替代 VK_MEDIA_PLAY_PAUSE。对不起,但我不明白你的回答对我有什么帮助:/如果我错了,你能详细说明一下吗? (我真的希望我是错的,因为我没有太多的Windows开发经验) 媒体播放器可以直接处理 WM_APPCOMMAND。通常,如果前台窗口不处理 WM_APPCOMMAND,则消息由 DefWindowProc 转换为 shell 事件。由播放器(和任何其他软件)来监听这个 shell 事件。大多数玩家可能不关心并且只关心他们何时是前台窗口并获取消息而不是事件。因此,您需要向您关心的每一位玩家发送消息。 如何获取玩家名单? 没有列表,你得自己做窗口类名数据库。以上是关于在 Windows 上可靠地暂停所有正在播放的媒体的主要内容,如果未能解决你的问题,请参考以下文章
暂停播放时 MPNowPlayingInfoCenter 没有正确反应
在 Windows 上获取当前正在播放的媒体缩略图的方法仅适用于每个 Python 实例