【发布时间】:2021-01-06 18:54:29
【问题描述】:
我想在后台运行一个小脚本,如果任何其他程序开始播放音频,它将暂停 Spotify 音乐 - 例如视频、浏览器、游戏……
即使没有使用 win32api 和 SendMessage 的 API,我的 spotify 部分也能正常工作,但是我似乎找不到任何方法来检查其他程序是否正在播放音频。
我尝试查看 windows 混音器,甚至可能查看插孔连接器,什么都没有..
这是它的代码,但它缺少检查功能和循环
奖励点,如果你看到一个程序做这件事,我全力以赴,它甚至被建议给 Spotify,但他们从未回应。
def f_click(pycwnd):
x=800
y=840
lParam = y << 16 | x
pycwnd.SendMessage(win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam);
pycwnd.SendMessage(win32con.WM_LBUTTONUP, 0, lParam);
def get_whndl():
whndl = win32gui.FindWindowEx(0, 0, None, 'Spotify Premium')
return whndl
def make_pycwnd(hwnd):
PyCWnd = win32ui.CreateWindowFromHandle(hwnd)
return PyCWnd
whndl = get_whndl()
pycwnd = make_pycwnd(whndl)
f_click(pycwnd)
【问题讨论】:
-
我已经看到这个问题问了好几次了,所以这里列出了我可以在
<10 Minutes 中找到的每个 SO 问题的列表。这个问题封装了音频和可能的系统进程,这两者都由原生 API 处理。这意味着需要一个现有的 python 库来包装所有这些潜在的 OS API 调用。这就是您使用 PyAudio 得到的,但我不相信存在任何适合您需求的东西 -
除此之外,它还需要像Jack Audio那样创建一些环回系统音频,但监控只会告诉你有音频,而不是它来自哪里。
-
我不知道
DirectSound、ASIO或WASAPI是否有办法检查哪些进程正在与它们交互,在这种情况下,您可能需要检查系统进程。您可能需要远离 python,或者至少编写自己的C/C++库,然后您可以使用 python 进行交互。