返回

Windows 飞出菜单噪声烦人?教你一招轻松静音

python

静音 Windows 飞出菜单中的所有活动声音

问题:应用程序中的声音噪音

当您在 Windows 中使用飞出菜单时,应用程序可能会播放声音,例如通知或警报。这些声音可能会分散注意力,甚至令人恼火。

解决方案:暂停所有活动声音

我们可以通过以下步骤暂停所有活动声音:

  1. 识别正在播放声音的应用程序: 使用 winsound.waveGetNumDevs() 获取正在播放声音的应用程序列表。

  2. 检查声音是否暂停: 使用 psutil.process_iter() 检查每个应用程序的进程状态,查看其是否已暂停。

  3. 暂停所有活动声音: 使用 winsound.waveOutPause() 暂停所有正在播放声音的应用程序。

代码实现

import winsound
import psutil

def pause_all_active_sounds():
    """暂停所有正在播放的聲音。"""
    processes = []
    for i in range(winsound.waveGetNumDevs()):
        process = winsound.waveOutGetDevCaps(i).name
        if process not in processes:
            processes.append(process)

    for process in processes:
        if not is_sound_paused(process):
            winsound.waveOutPause(process)

def is_sound_paused(process_name):
    """检查给定进程的聲音是否已暂停。"""
    for proc in psutil.process_iter():
        if proc.name() == process_name:
            # 检查进程状态是否为"暂停"
            return proc.status() == "paused"
    return False

恢复活动声音

要恢复所有已暂停的声音,只需调用 winsound.waveOutRestart() 即可。

常见问题解答

1. 这个解决方案会影响所有声音吗?

不,此解决方案仅影响通过 Windows 飞出菜单播放的声音。其他声音,例如系统声音和媒体播放器中的声音,不会受到影响。

2. 是否有更简单的暂停声音的方法?

是的,您可以使用媒体键盘快捷键来快速暂停所有声音。按 Fn + F8 即可。

3. 我可以在脚本中使用此解决方案吗?

当然可以。只需将上面提供的代码粘贴到您的脚本中,就可以自动暂停所有活动声音。

4. 是否有办法只暂停特定应用程序的声音?

是的,您可以使用 winsound.waveOutPauseId() 函数来暂停特定应用程序的声音。但是,您需要知道该应用程序的波形设备 ID。

5. 这个解决方案是否兼容所有版本的 Windows?

此解决方案与 Windows 7 及更高版本兼容。