如何使Windows静音背景应用程序?
这是一个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")
记得先安装 pycaw pywin32,可以使用 pip install pycaw pywin32 命令。
在 Windows 11 上测试过 Python 3.10.6 版本。
将 CHANGE_THIS 替换为应用程序的类名。
要找到该名称,请取消注释最后两行代码,运行脚本,将应用程序置于前台并停止脚本。你将在 log.txt 中找到该名称(以及其他应用程序)。