最小化应用程序时停止播放声音和音量

Posted

技术标签:

【中文标题】最小化应用程序时停止播放声音和音量【英文标题】:Stop playing sound and volume when application is minimized 【发布时间】:2011-11-29 19:35:08 【问题描述】:

我在 Windows 下的一个 C++ 应用程序中使用了PlaySound 函数。 当此应用程序运行本地 var 命令PlaySound 并开始播放 WAV 文件时。

但是当您单击我的应用程序的最小化对话框时,声音会继续播放,此时必须将逻辑规则静音或静音,直到您再次最大化应用程序。

问题是:

Windows 中是否有应用程序状态来检测应用程序何时被最小化? 为了用0x00 = mute设置waveOutSetVolume函数。

【问题讨论】:

【参考方案1】:

让您的应用程序窗口捕捉WM_SYSCOMMAND 消息并检查它是否有SC_MINIMIZESC_MAXIMIZESC_RESTORE 通知。

【讨论】:

Win+D会触发WM_SYSCOMMAND吗? 不,它没有,因为该功能并没有真正最小化应用程序窗口,它只是将桌面窗口带到前台。但是,它确实会触发 WM_WINDOWPOSCHANGINGWM_GETMINMAXINFOWM_NCCALCSIZEWM_WINDOWPOSCHANGEDWM_MOVEWM_SIZEWM_STYLECHANGINGWM_STYLECHANGED 消息(由 Spy++ 捕获)。【参考方案2】:

当应用程序窗口被最小化或最大化时,您的应用程序将收到WM_WINDOWPOSCHANGED 消息。检查 lParam 中的 WINDOWPOS 结构以确定新状态。然后,您可以分别关闭或打开声音。 (注意:这个消息也会在窗口移动、后退等时发送。所以检查lParam。)

可以通过IsIconic检查应用程序当前是否最小化。

而且我认为在应用程序最小化时必须停止播放声音是不合逻辑的。毕竟这是一个多任务操作系统。我希望它并行执行。

【讨论】:

以上是关于最小化应用程序时停止播放声音和音量的主要内容,如果未能解决你的问题,请参考以下文章

LocalPushNotification 声音和 iPhone 的音量按钮

EasyPlayer声音自动停止恢复,一键静音等功能

iPhone:如何播放忽略音量和铃声开关设置的声音?

播放录制文件时 iPhone 上的音量太低

在不播放音乐的情况下更改应用内的音量

如何将音频播放器的音量控制与本地通知的声音联系起来?