【发布时间】:2010-12-23 04:29:28
【问题描述】:
我正在研究在 OS X 中进行屏幕抓取和控制鼠标的业余项目。
我不是在寻找最优雅的方式,但我需要能够每半秒左右捕获一次屏幕。
我发现我可以使用screencapture 命令行工具 (screencapture -w -W -i ~/Desktop/capture.jpg),但我担心它可能不够快。
我也在寻找一种发送点击、设置光标位置和获取光标位置的方法。有点像 win32api 提供的:mouse_event、SetCursorPos 和 GetCursorPos。
我发现这个示例代码使用 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