Python - OS X中的屏幕抓取和鼠标控制

5 投票
3 回答
4835 浏览
提问于 2025-04-16 08:56

我正在研究屏幕抓取和在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),如果这有影响的话。

谢谢!

3 个回答

0

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

这个软件可以让你自定义你的HID设备的行为,比如键盘、数字键盘、鼠标、轨迹球、游戏杆、手柄、油门等等。

2

如果你只是想抓取网页上的信息,我建议你试试 Sikuli。这个工具让界面自动化变得像玩游戏一样简单,而且它的脚本是用Python语言写的。

4

你可以看看autopy这个项目。它可以在OSX、Linux和Windows系统上运行。

撰写回答