Как получить имя и значение объекта GUI в Python после нажатия

Я хочу записать пользовательский сценарий приложения Windows. Для этого я хочу получить / записать тип объекта, имя объекта и значение объекта объектов GUI после щелчка мышью на объекте рядом со снимком экрана и положением мыши.

Я застрял с поиском, как это. Пожалуйста помоги.

У меня есть следующий код Python.

saveDir = r'C:\Privat\ZuppU\temp'
stepListID = 1


def capture_step_objects(event):
    global stepListID
    stepEvent = 'Click'

    # Capture the application mouseclick area
    (mx, my) = event.Position

    fgWindow = win32gui.GetForegroundWindow()
    fgWindowName = win32gui.GetWindowText(fgWindow)

    # Capture the application window
    (ax1, ay1, ax2, ay2) = win32gui.GetWindowRect(fgWindow)
    stepCapture = ImageGrab.grab((ax1, ay1, ax2, ay2))
    stepImage = os.path.join(saveDir, 'Step' + str(stepListID) + '.png')
    stepCapture.save(stepImage)

hm = pyHook.HookManager()
hm.SubscribeMouseAllButtonsDown(capture_step_objects)
hm.HookMouse()
pythoncom.PumpMessages()
hm.UnhookMouse()

# Main loop

1 ответ

Вот пример для pywinauto и pyHook: Recorder.py.

Но вы можете столкнуться с некоторыми другими подводными камнями. Типичный пример - закрытие диалога нажатием кнопки "ОК". Когда вы находитесь в обработчике событий, диалог может быть уже закрыт, поэтому вы не сможете получить какую-либо информацию о несуществующем окне. Здесь требуется некоторое сложное отслеживание.

То же самое относится и к событиям API UI Automation (pywinauto скоро будет поддерживать UIA). Но у нас нет ресурсов для реализации даже чистого Python-аналога pyHook за короткий срок. Таким образом, хорошая реализация рекордера выглядит далеко-далеко. Любая помощь приветствуется.;)

Другие вопросы по тегам