python 为什么 win32process.GetWindowThreadProcessId() PID returns 一个列表

python why win32process.GetWindowThreadProcessId() PID returns a list

我尝试在 python 中找到当前活动 window 的可执行文件路径。 我对系统变量不熟悉,不知道该怎么做,我找到了一些解决方案并进行了实践。

首先我尝试激活电流window 并找到相关的 PID,然后找到路径。

import psutil
import win32process
import win32gui

window = win32gui.GetForegroundWindow()
pid = win32process.GetWindowThreadProcessId(window)
active_window_path = psutil.Process(pid[1]).exe()


print("Active window: %s" % str(get_active_window()))

虽然我使用 win32process 获取 PID,但它 returns 是一个列表。为什么? 我必须 select 列表的第一个元素才能得到正确的结果。 PID 不应该是整数吗?为什么它返回一个列表?为什么第二个元素是正确的而不是第一个?

它是 [GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions 的一部分,它是 PythonWINAPI 的包装。

将代码(的相关部分)更改为(非强制性,只是为了提高可读性):

tid, pid = win32process.GetWindowThreadProcessId(window)
active_window_path = psutil.Process(pid).exe()