windows win32属性是不再被python 3识别

h7wcgrx3  于 2023-01-10  发布在  Windows
关注(0)|答案(1)|浏览(147)

我已经安装了psutilpywin32,我正在尝试使用以下代码:

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'

出了什么问题,我该如何解决?

sczxawaw

sczxawaw1#

如(incomplete - check [SO]: How to create a Minimal, Reproducible Example (reprex (mcve)))文本所示,错误来自以下行:

_, _, pid, _ = win32process.GetWindowThreadProcessId(chrome_process.handle())

因此它与 * PyWin 32 * 无关(* 顺便说一句 *,该行还有其他错误(win32process.GetWindowThreadProcessId 仅返回2个值),但我们先不考虑这一点)。
根据[阅读文档]:psutil - Process类,没有名为 handle 的方法,但有:

*命令行()

作为字符串列表调用此进程的命令行。由于进程的cmdlet行可能会更改,因此不会缓存返回值。
显然,您甚至不需要 * PyWin 32 *,因为仅使用 PSUtil 就可以实现您的目标。
示例(我只显示第一个条目(我有许多 Chrome 窗口,打开了许多许多选项卡),因为我不想用垃圾填充答案):

>>> import psutil
>>>
>>>
>>> for proc in psutil.process_iter():
...     if proc.name() == "chrome.exe":
...         print(proc.pid)
...         try:
...             print(proc.cmdline())
...         except PermissionError:
...             print("Error")
...
312
['C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', '--type=renderer', '--lang=en-US', '--device-scale-factor=1', '--num-raster-threads=4', '--enable-main-frame-before-activation', '--renderer-client-id=169', '--time-ticks-at-unix-epoch=-1673083008231246', '--launch-time-ticks=15068979802', '--mojo-platform-channel-handle=10132', '--field-trial-handle=1988,i,5212516154784317323,8585695678623502888,131072', '/prefetch:1']
1464
['C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', '--type=renderer', '--lang=en-US', '--device-scale-factor=1', '--num-raster-threads=4', '--enable-main-frame-before-activation', '--renderer-client-id=213', '--time-ticks-at-unix-epoch=-1673083008231246', '--launch-time-ticks=18739962058', '--mojo-platform-channel-handle=14864', '--field-trial-handle=1988,i,5212516154784317323,8585695678623502888,131072', '/prefetch:1']
1492
...

相关问题