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 的一部分,它是 Python 对 WINAPI 的包装。
- [ActiveState.Docs]: win32process.GetWindowThreadProcessId (this is the closest that I could find of an official pywin32 doc) wraps [MS.Docs]: GetWindowThreadProcessId function
- Returns 由 2 个 int 组成的元组:
- 线程 ID (tid)
- 进程 ID (pid)
将代码(的相关部分)更改为(非强制性,只是为了提高可读性):
tid, pid = win32process.GetWindowThreadProcessId(window)
active_window_path = psutil.Process(pid).exe()
我尝试在 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 的一部分,它是 Python 对 WINAPI 的包装。
- [ActiveState.Docs]: win32process.GetWindowThreadProcessId (this is the closest that I could find of an official pywin32 doc) wraps [MS.Docs]: GetWindowThreadProcessId function
- Returns 由 2 个 int 组成的元组:
- 线程 ID (tid)
- 进程 ID (pid)
将代码(的相关部分)更改为(非强制性,只是为了提高可读性):
tid, pid = win32process.GetWindowThreadProcessId(window)
active_window_path = psutil.Process(pid).exe()