Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OS X中Python屏幕抓取和鼠标控制_Python_Macos_Screen Scraping - Fatal编程技术网

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

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库设置光标位置,但它总是将

我正在为一个爱好项目研究OSX中的屏幕抓取和鼠标控制

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

我发现我可以使用
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为我做”的实用程序。