5

我碰巧在这里使用 Python 绑定,但我怀疑问题以及最终的答案不是 Python 特定的。

在 Windows 10 上,使用Python 绑定到 Windows 核心音频库,特别pycaw.AudioUtilities.GetAllSessions()'conhost.exe'通过我当前进程的音频和 (b) 对应于 Windows 10 音量混合器中的“控制台窗口主机”滑块。这是我想从我的程序中操作的,并pycaw提供绑定来做到这一点。

到目前为止,一切都很好。我的问题是我看不到任何从当前进程 ID 向后工作的方法,因此,在下一次启动时,我的程序可以询问“哪个进程对应于管理我的音频输出的会话?” 我天真地期望该会话 pid 可能出现在当前进程的祖先中,但它没有:

import os, psutil

psutil.Process(os.getpid())
# prints: psutil.Process(pid=3628, name='python.exe', started='14:56:41')

psutil.Process(os.getpid()).parent()
# prints: psutil.Process(pid=16676, name='cmd.exe', started='13:00:57')

psutil.Process(os.getpid()).parent().parent()
# prints: psutil.Process(pid=1356, name='explorer.exe', started='12:21:26')

psutil.Process(os.getpid()).parent().parent().parent()
# prints nothing. It's `None`. We've reached the top.

我应该如何查询控制当前进程的音频会话的 pid?(我认为会话不会总是被命名'conhost.exe——有时我会pythonw.exe在没有控制台的情况下运行相同的代码。)

4

0 回答 0