Python from_point函数不返回windows CMD上的预期控件
我有以下代码:Python from_point函数不返回windows CMD上的预期控件,python,ui-automation,pywinauto,Python,Ui Automation,Pywinauto,我有以下代码: from pywinauto import Desktop from pyautogui import position while True: desktop = Desktop(backend="uia") control = desktop.from_point(*position()) control.draw_outline() 因此,在每个代码循环中,pywinauto都会在当前鼠标位置的控件上绘制一个绿色矩形。这样地:
from pywinauto import Desktop
from pyautogui import position
while True:
desktop = Desktop(backend="uia")
control = desktop.from_point(*position())
control.draw_outline()
因此,在每个代码循环中,pywinauto都会在当前鼠标位置的控件上绘制一个绿色矩形。这样地:
但是,仅在CMD应用程序上,from_point
函数找不到状态栏和滚动条。它只找到文本区域
我认为它与CMD应用程序有关,可能它在所有其他控件之前绘制文本区域控件。所以我想知道是否有可能克服这种情况,也许可以使用函数top\u from\u point
和/或parent
。值得一提的是,我没有发现任何其他应用程序具有相同的行为,但可能其他应用程序也存在此问题。- 可以使用“Inspect.exe”复制此行为: 如果将鼠标光标悬停在Windows CMD上,它将只找到“文本区域”控件。要查找其他控件,必须单击inspect GUI中的树
- 对于Pywinauto,它是相同的: 如果将鼠标光标悬停在Windows CMD上,它将只找到“文本区域”控件。 要查找其他控件,必须执行以下代码: 打印(control.top\u level\u parent().subjections())
@classmethod
def from_point(cls, x, y):
return cls(IUIA().iuia.ElementFromPoint(tagPOINT(x, y)))
它正在使用UIAutomationCore.dll中的MS UI自动化API函数
所以我认为这可能是iuia.ElementFromPoint的问题。我也尝试过其他自动化工具,但同样的行为也发生了。谢谢,大卫。