.NET Core WinForm应用如何暂停/停止其他App播放的音频?
跨应用音频暂停/停止实现方案
要控制电脑上输出到蓝牙耳机的第三方应用音频(浏览器、Spotify等),核心是利用系统提供的音频会话管理API,不同平台的实现方式如下:
Windows 平台
- 使用
Windows.Media.ControlAPI:这是微软官方的全局媒体控制接口,能直接获取所有活跃的音频播放会话,无需针对特定应用适配。- 实现步骤:通过
GlobalSystemMediaTransportControlsSessionManager.RequestAsync()获取会话管理器,枚举所有GlobalSystemMediaTransportControlsSession实例,定位处于播放状态的会话后,调用TryPauseAsync()或TryStopAsync()即可完成控制。 - 要求:Windows 10 1809及以上版本,应用需声明
backgroundMediaPlayback权限。
- 实现步骤:通过
macOS 平台
- 方案一:借助
MPRemoteCommandCenter(AVFoundation框架):注册暂停/停止命令的响应逻辑,同时可主动向系统媒体会话发送控制指令,支持所有遵循系统媒体规范的应用。 - 方案二:结合AppleScript与进程检测:
- 用
NSWorkspace获取当前播放音频的应用进程,针对Spotify可执行AppleScript命令:tell application "Spotify" to pause;针对Safari等浏览器,可通过AppleScript定位播放音频的标签页并执行暂停操作。 - 这种方式兼容性强,适合控制各类常见应用。
- 用
注意事项
- 避免使用进程注入、模拟键盘快捷键这类非常规手段,不仅兼容性差,还可能触发系统安全机制。
- 确保应用拥有足够的系统权限,比如macOS需要获取“控制电脑”权限,Windows需要后台访问权限。
内容的提问来源于stack exchange,提问作者MARJAN KHAN
相关产品推荐
相关产品推荐

