1

我想记录一个 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
4

1 回答 1

0

pywinauto和 pyHook有一个示例: recorder.py

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

UI 自动化 API 事件也是如此(pywinauto 很快将支持 UIA)。但是我们没有资源在短期内实现 pyHook 的纯 Python 类似物。所以一个好的记录器实现看起来离现在还很远。任何帮助表示赞赏。;)

于 2015-12-25T10:43:12.930 回答