Получить контроль над позицией на Pywinauto

1

У меня есть позиция мыши на экране, например (10, 10), и я хочу перевести это положение на элемент управления. Как я могу это сделать?

Пример:

from pywinauto.application import Application

app = Application((backend="uia").start("notepad.exe")
dlg = app.top_window()
hardcoded_file_button_rec = dlg.File.rectangle() #<RECT L10, T10, R40, B40>

given_mouse_position = (10, 10)
found_file_button = search_by_position(app, given_mouse_position)

assert hardcoded_file_button_rec == found_file_button.rectangle()

У pywinauto уже есть встроенная функция для этого? По этому вопросу я нашел, как перебирать все элементы управления в окне, используя pywinauto. Поэтому, повторяя его, я могу проверить, есть ли controls[i].rectancle().top == 10 and controls[i].rectancle().left == 10.

Что правильно делать?

Теги:
python-3.x
pywinauto

1 ответ

0

Метод .from_point(x, y) находится в разработке.

Обходной путь здесь: выпуск № 413.

Как и на StackOverflow: как передать POINT-структуру методу ElementFromPoint в Python?

Очистить образец кода для любого элемента:

from ctypes.wintypes import tagPOINT
import pywinauto

elem = pywinauto.uia_defines.IUIA().iuia.ElementFromPoint(tagPOINT(x, y))
element = pywinauto.uia_element_info.UIAElementInfo(elem)
wrapper = pywinauto.controls.uiawrapper.UIAWrapper(element)

wrapper - это то, что вам нужно, вероятно, так как это объект действия, имеющий такие методы, как .invoke() и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню