如何在单击后获取Python中GUI对象的名称和值

如何在单击后获取Python中GUI对象的名称和值,python,microsoft-ui-automation,pyhook,msaa,Python,Microsoft Ui Automation,Pyhook,Msaa,我想记录windows应用程序的用户场景。为此,我希望在鼠标单击屏幕截图旁边的对象和鼠标位置后,检索/记录GUI对象的对象类型、对象名称和对象值 我找不到该怎么做。请帮忙 我有以下Python代码 saveDir = r'C:\Privat\ZuppU\temp' stepListID = 1 def capture_step_objects(event): global stepListID stepEvent = 'Click' # Capture the ap

我想记录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
和pyHook有一个示例:

但你可能会陷入其他陷阱。典型的示例是通过单击“确定”按钮关闭对话框。当您在事件处理程序中时,该对话框可能已经关闭,因此您将无法检索有关不存在窗口的任何信息。这里需要一些复杂的跟踪

UI自动化API事件也是如此(pywinauto很快就会支持UIA)。但我们短期内没有pyHook的资源。因此,一个好的记录器实现看起来离现在还很远。任何帮助都将不胜感激

和pyHook有一个示例:

但你可能会陷入其他陷阱。典型的示例是通过单击“确定”按钮关闭对话框。当您在事件处理程序中时,该对话框可能已经关闭,因此您将无法检索有关不存在窗口的任何信息。这里需要一些复杂的跟踪

UI自动化API事件也是如此(pywinauto很快就会支持UIA)。但我们短期内没有pyHook的资源。因此,一个好的记录器实现看起来离现在还很远。任何帮助都将不胜感激