Я пытаюсь создать построитель макросов, используя pywinauto. Я разрабатываю два приложения: макрорекордер и макроплеер. Рекордер отслеживает все события мыши и клавиатуры, а затем сохраняет их в файл json, чтобы проигрыватель макросов мог воссоздать события.
Когда пользователь щелкает элемент, рекордер преобразует координаты мыши UIAWrapper
, используя следующий код:
def coords_to_UIAWrapper(coords):
x, y = coords
elem = IUIA().iuia.ElementFromPoint(tagPOINT(x, y))
element = UIAElementInfo(elem)
wrapper = UIAWrapper(element)
return wrapper
Затем рекордер сохраняет событие и wrapper.window_text()
в файле json, например:
{
"events": [
{
"device": "mouse",
"action": "press",
"text": "<TODOS>"
},
{
"device": "mouse",
"action": "release",
"text": "<TODOS>"
}
]
}
А это изображение кнопки:
Но теперь возникает проблема, потому что в программе больше одной кнопки, где window_text
равно <TODOS>
:
Я думал, что для различения элементов можно использовать следующие атрибуты (inspect.exe): AutomationId, ClassName, RuntimeId, Name, LocalizedControlType
, но LocalizedControlType, ClassNAme and Name
одинаковы для всех кнопок, а AutomationId and RuntimeId
меняются каждый раз, когда я открываю приложение. Итак, как я могу различать два элемента, чтобы иметь возможность сериализовать событие и воспроизвести его в макроплеере.