【问题标题】:Python - Screen-scraping and controlling mouse in OS XPython - OS X 中的屏幕抓取和控制鼠标
【发布时间】:2010-12-23 04:29:28
【问题描述】:

我正在研究在 OS X 中进行屏幕抓取和控制鼠标的业余项目。

我不是在寻找最优雅的方式,但我需要能够每半秒左右捕获一次屏幕。

我发现我可以使用screencapture 命令行工具 (screencapture -w -W -i ~/Desktop/capture.jpg),但我担心它可能不够快。

我也在寻找一种发送点击、设置光标位置和获取光标位置的方法。有点像 win32api 提供的:mouse_eventSetCursorPosGetCursorPos

我发现这个示例代码使用 PyObjC 库来设置光标位置,但它总是将我的鼠标移动到 (0,0) 而不是我传递的坐标。

import objc

class ETMouse():   
    def setMousePosition(self, x, y):
        bndl = objc.loadBundle('CoreGraphics', globals(),
                '/System/Library/Frameworks/ApplicationServices.framework')
        objc.loadBundleFunctions(bndl, globals(),
                [('CGWarpMouseCursorPosition', 'v{CGPoint=ff}')])
        CGWarpMouseCursorPosition((x, y))

if __name__ == "__main__":
    et = ETMouse()
    et.setMousePosition(500, 500)

编辑:如果重要的话,我正在运行 Snow Leopard (10.6)。

谢谢!

【问题讨论】:

  • 至少对于屏幕抓取来说,PyQt4/PySide 让这变得简单;不确定您会获得什么样的鼠标位置控制,据我所知,该代码可能是最好的方法。
  • 感谢 PyQt4 链接。在/usr/share/doc/python-qt4-doc/examples/desktop 下实际上有一个截图示例。顺便说一句,您不会碰巧知道任何发送击键的库吗?

标签: python macos screen-scraping


【解决方案1】:

看看autopy。适用于 OSX、Linux 和 Windows。

【讨论】:

    【解决方案2】:

    如果你只是截屏,我建议你试试Sikuli 吗?它使界面自动化像儿戏一样,脚本使用 Python。

    【讨论】:

    • 使用截图的好概念。您的体验如何?
    • 太棒了。我创建了一个单击即可登录《魔兽世界》(包括验证器密钥)和其他各种“懒得单击多次,只需让我预先输入所有信息并让 Sikuli 为我完成”实用程序。
    【解决方案3】:

    ControllerMate 这样的自动化软件会有帮助吗?

    允许您自定义行为 您的 HID 设备 - 键盘, 键盘、鼠标、轨迹球、操纵杆、 游戏手柄、油门等

    【讨论】:

    • 奇怪的是这个问题还没有回答,但 Quartz 事件服务是进行鼠标控制的现代方式,而 CGWindow API 是进行屏幕抓取的。两者都是 C API,因此在 Python 中,您可以使用 PyObjC 或 ctypes 来获取它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2019-01-17
    • 2014-07-29
    相关资源
    最近更新 更多