如何让 Windows 将后台应用程序静音?

如何让 Windows 将后台应用程序静音?

我经常使用Alt-Tab退出游戏来观看视频或做其他事情,但当游戏最小化时游戏声音仍然会播放。有没有办法让 Windows 静音后台应用程序但不停止它们(因为这是一个在线游戏,我猜我会失去连接)?

如果没有该选项,是否可以创建某种快捷方式来使特定游戏静音/取消静音?

答案1

由于某种原因,该功能似乎无法在 Windows 上使用。我在 Google 上搜索过,你和我似乎是仅有的几个想要该功能的人。

不过我有一个解决方案!在 Steam 上(可能在其他地方)有一个名为 Borderless Gaming 的实用程序。它的主要功能是允许以无边框窗口模式运行全屏游戏(对于不支持此功能的游戏)。

但是它还有一个辅助功能:“后台静音”。它确实能做到这一点。您可以将游戏添加到其界面,并告诉它不要弄乱您的窗口大小。只需在后台静音即可。它确实有效。

答案2

这是一个 Python 脚本,当特定应用程序在后台时将其静音,当其在前台时将其取消静音。

from pycaw.pycaw import AudioUtilities
import win32gui
import win32process
import time

target_app_class = "CHANGE_THIS"

def find_process_id():
    hwnd = win32gui.FindWindow(target_app_class, None)
    if hwnd != 0:
        _, process_id = win32process.GetWindowThreadProcessId(hwnd)
        return process_id
    return None

def app_is_in_foreground():
    try:
        act_name = win32gui.GetClassName(win32gui.GetForegroundWindow())
    except win32gui.error:
        act_name = ""
    
    return act_name == target_app_class

def change_app_mute(process_id, mute=1):
    sessions = AudioUtilities.GetAllSessions()
    for session in sessions:
        if session.Process and session.Process.pid == process_id:
            session.SimpleAudioVolume.SetMute(mute, None)

while True:
    process_id = find_process_id()
    if process_id:
        if app_is_in_foreground():
            change_app_mute(process_id, 0)
        else:
            change_app_mute(process_id)
    time.sleep(1)
#   with open("log.txt", "a") as file:
#        file.write(win32gui.GetClassName(win32gui.GetForegroundWindow()) + "\n")

记住pip install pycaw pywin32首先。
在 Windows 11 上使用 Python 3.10.6 进行测试。

将 CHANGE_THIS 替换为应用程序的类名。
要查找名称,请取消注释最后两行,运行脚本,将应用程序置于前台并停止脚本。您将在 log.txt 中找到该名称(以及其他应用程序)。

答案3

我创建了另一个可以做到这一点的工具:

https://github.com/TomiBelan/mute-on-focus-lost

此脚本可以在应用程序失去焦点时自动静音正在播放的音频,并在应用程序重新获得焦点时取消静音。此功能有时也称为“后台静音”、“非活动时静音”、“最小化时静音”或“Alt+Tab 时静音”。

例如,如果您需要按 Alt+Tab 退出游戏并观看视频,但游戏声音仍在播放,则此脚本对游戏很有用。有些游戏有内置的“失去焦点时静音”选项,但此脚本应该适用于没有内置选项的应用和游戏。

快捷键+F1立即将活动应用程序静音/取消静音。

快捷键+F2为活动应用启用“失去焦点时静音”模式。短促的哔声将让您知道它已成功。在此模式下,当您最小化应用或切换到另一个窗口时,应用将静音,当您切换回来时,应用将取消静音。再次按下该键将禁用此应用的“失去焦点时静音”模式并播放较低的哔声。

答案4

确实,我相信 Windows 并不支持开箱即用的此功能。

值得庆幸的是,有一个开源应用程序可以解决这个问题。

它的名字是 Background-Muter,链接是https://github.com/nefares/Background-Muter

相关内容