我经常使用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