gpt4 book ai didi

python - from_point 函数不会在 windows CMD 上返回预期的控件

转载 作者:行者123 更新时间:2023-12-04 07:37:52 26 4
gpt4 key购买 nike

我有以下代码:

from pywinauto import Desktop
from pyautogui import position

while True:
desktop = Desktop(backend="uia")
control = desktop.from_point(*position())
control.draw_outline()
因此,在每个代码循环中,pywinauto 在当前鼠标位置的控件上绘制一个绿色矩形。像这样:
from_point
但是,仅在 CMD 应用程序上, from_point函数没有找到状态栏和滚动条。它只找到文本区域。
enter image description here
我认为这与 CMD 应用程序有关,可能它在所有其他控件之前绘制了它的文本区域控件。所以我想知道是否有可能克服这种情况,使用函数 top_from_point和/或 parent , 也许。值得一提的是,我还没有发现任何其他具有相同行为的应用程序,但可能其他一些应用程序也存在此问题。

最佳答案

  • 可以使用“Inspect.exe”重现此行为:
    如果您将鼠标光标悬停在 Windows CMD 上,它只会找到“文本区域”控件。要找到其他控件,您必须单击检查 GUI 中的树。
  • 使用 Pywinauto,也是一样的:
    如果您将鼠标光标悬停在 Windows CMD 上,它只会找到“文本区域”控件。
    要找到其他控件,您必须执行以下代码:
    打印(控制。top_level_parent()。后代())

  • from_point 的实现在 uia_element_info.py 中:
    @classmethod
    def from_point(cls, x, y):
    return cls(IUIA().iuia.ElementFromPoint(tagPOINT(x, y)))
    它使用来自 UIAutomationCore.dll 的 MS UI 自动化 API 函数
    所以我认为这可能是 iuia.ElementFromPoint 的问题。

    关于python - from_point 函数不会在 windows CMD 上返回预期的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67643454/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com