我已经安装了psutil
和pywin32
,我正在尝试使用以下代码:
import psutil
import win32process, win32api, win32con
# Find the Chrome process
for proc in psutil.process_iter():
if proc.name() == "chrome.exe":
chrome_process = proc
break
# Get the command line arguments of the Chrome process
_, _, pid, _ = win32process.GetWindowThreadProcessId(chrome_process.handle())
handle = win32api.OpenProcess(
win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid
)
argv = win32process.GetCommandLine(handle)
# Extract the URL from the command line arguments
url = argv.split(" ")[-1]
print(url)
在Visual Studio代码中,属性仅显示为白色文本。
我收到一个错误消息:
AttributeError: 'Process' object has no attribute 'handle'
出了什么问题,我该如何解决?
1条答案
按热度按时间sczxawaw1#
如(incomplete - check [SO]: How to create a Minimal, Reproducible Example (reprex (mcve)))文本所示,错误来自以下行:
因此它与 * PyWin 32 * 无关(* 顺便说一句 *,该行还有其他错误(win32process.GetWindowThreadProcessId 仅返回2个值),但我们先不考虑这一点)。
根据[阅读文档]:psutil - Process类,没有名为 handle 的方法,但有:
*命令行()
作为字符串列表调用此进程的命令行。由于进程的cmdlet行可能会更改,因此不会缓存返回值。
显然,您甚至不需要 * PyWin 32 *,因为仅使用 PSUtil 就可以实现您的目标。
示例(我只显示第一个条目(我有许多 Chrome 窗口,打开了许多许多选项卡),因为我不想用垃圾填充答案):