OS X中Python屏幕抓取和鼠标控制
我正在为一个爱好项目研究OSX中的屏幕抓取和鼠标控制 我不是在寻找最优雅的方式,但我需要能够每半秒左右捕捉一次屏幕 我发现我可以使用OS X中Python屏幕抓取和鼠标控制,python,macos,screen-scraping,Python,Macos,Screen Scraping,我正在为一个爱好项目研究OSX中的屏幕抓取和鼠标控制 我不是在寻找最优雅的方式,但我需要能够每半秒左右捕捉一次屏幕 我发现我可以使用screenscapture命令行工具(screenscapture-w-w-I~/Desktop/capture.jpg),但我担心它可能不够快 我也在寻找一种发送点击、设置光标位置和获取光标位置的方法。有点像win32api提供的:mouse\u事件,SetCursorPos和GetCursorPos 我发现这个示例代码使用PyObjC库设置光标位置,但它总是将
screenscapture
命令行工具(screenscapture-w-w-I~/Desktop/capture.jpg
),但我担心它可能不够快
我也在寻找一种发送点击、设置光标位置和获取光标位置的方法。有点像win32api提供的:mouse\u事件
,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)
编辑:我正在运行雪豹(10.6),如果它的问题
谢谢 自动化软件需要帮助吗 允许您自定义行为 你的HID设备-键盘, 键盘、鼠标、轨迹球、操纵杆、, 游戏板、油门等
如果你只是在截屏,我可以建议你试试吗?它使界面自动化像儿童游戏一样,脚本使用Python。看一看。适用于OSX、Linux和Windows。至少对于屏幕抓取而言,PyQt4/PySide使其变得简单;我不确定你会得到什么样的鼠标位置控制,据我所知,这段代码可能是最好的方法。感谢PyQt4链接。实际上,在
/usr/share/doc/python-qt4-doc/examples/desktop
下有一个屏幕截图示例。顺便说一句,你可能不知道有哪个库可以发送击键信息?奇怪的是,这个问题还没有得到回答,但石英事件服务是实现鼠标控制的现代方式,而CGWindow API则是实现屏幕抓取的现代方式。这两个都是C API,所以在Python中,您可以使用PyObjC或ctypes来访问它们。你的经历如何?太棒了。我创建了一个登录魔兽世界在一个单一的点击(包括验证器键)和各种其他“太懒了,点击了一大堆时间只让我输入所有的信息,让Sikuli为我做”的实用程序。