【发布时间】:2017-01-27 16:50:43
【问题描述】:
我知道我可以通过 GetWindowThreadProcessId(hwnd) 之类的方式获取 processId,
pid = win32process.GetWindowThreadProcessId(hwnd)
但是,如何使用 pid 获取进程名称(例如:chrome.exe、explorer.exe...等)
谢谢
【问题讨论】:
我知道我可以通过 GetWindowThreadProcessId(hwnd) 之类的方式获取 processId,
pid = win32process.GetWindowThreadProcessId(hwnd)
但是,如何使用 pid 获取进程名称(例如:chrome.exe、explorer.exe...等)
谢谢
【问题讨论】:
你正在使用 win32 模块,所以你可以这样做:
import win32api
import win32process
import win32con
.....
pid = win32process.GetWindowThreadProcessId(hwnd)
handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid[1])
proc_name = win32process.GetModuleFileNameEx(handle, 0)
顺便说一句,它是通过以下方式完成的:
http://nullege.com/codes/show/src%40f%40p%40fpdb-sql-HEAD%40pyfpdb%40WinTables.py/135/win32process.GetWindowThreadProcessId/python
对于跨平台解决方案,我可能会尝试使用其他人已经提到的 psutil 。您还可以查看以下内容:
https://www.blog.pythonlibrary.org/2010/10/03/how-to-find-and-list-all-running-processes-with-python/
【讨论】:
如果您愿意使用第 3 方模块,您可以通过 psutil 轻松做到这一点
首先你需要安装它:
pip install psutil
那么,假设你有一个进程 ID,你只需要这样做:
import psutil
PID = 5220
print(psutil.Process(PID).name())
在我的例子中,这会打印:
python.exe
【讨论】: