Как получить имя и значение объекта 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 за короткий срок. Таким образом, хорошая реализация рекордера выглядит далеко-далеко. Любая помощь приветствуется.;)