如何使用Cocoa或C++在Mac OS X中进行屏幕截图

20

如何在Mac OS X中以编程方式截取桌面区域的屏幕截图?

6个回答

14

我看到了两个有趣的选项,但尚未在专业领域中使用,它们分别是屏幕截图实用程序和MacFuse演示。

据man页面显示,自10.2版本以来,屏幕截图实用程序一直存在,并且可以通过NSTask与Cocoa应用程序相连。

MacFuse演示是通过每次打开文件夹创建一个新的屏幕截图之类的方式工作的。其想法是,您可以编写一个快速脚本,在需要时访问该图像,而无需在该计算机上实际运行该脚本。

但说真的,苹果公司还有一些其他名为“Son of Grab”的示例代码,它使用全新的CGWindow API,非常棒。

http://developer.apple.com/samplecode/SonOfGrab/


11

可以采用 NSTask 结合 'screencapture' 命令来实现此目的。

例如:

NSTask *theProcess;
theProcess = [[NSTask alloc] init];

[theProcess setLaunchPath:@"/usr/sbin/screencapture"];
// use arguments to set save location
[theProcess setArguments:@"blahblah"];
[theProcess launch];

然后,您可以打开文件,无论您将其保存在何处,对其进行处理,然后根据需要删除它。显然,这只是一种权宜之计,但它是可行的。


10

4

1
如果您正在尝试使用C++或Python完成此操作,以下内容可能会有所帮助。此外,如果您希望您的编程方法跨平台可移植(Windows、Linux、Mac OSX甚至更多),这将更加有用。
早期的回答提到了QT。
与QT允许您捕获和保存屏幕截图的方式相同,另一个“竞争”框架wxWidgets也可以实现。wxWidgets是一个C++框架,但它还通过wxPython提供了Python绑定。
要阅读更多信息,请使用以下链接,搜索书籍中的wxScreenDC,并从匹配搜索的页面列表中选择“第139页”。

http://books.google.com/books?id=CyMsvtgnq0QC&vq="accessing+the+screen+with+wxScreendc"


1
谢谢!这是代码: wxBitmap GetScreenShot() { wxSize screenSize = wxGetDisplaySize(); wxBitmap bitmap(screenSize.x, screenSize.y); wxScreenDC dc; wxMemoryDC memDC; memDC.SelectObject(bitmap); memDC.Blit(0, 0, screenSize.x, screenSize.y, & dc, 0, 0); memDC.SelectObject(wxNullBitmap); return bitmap; } - Juan Carlos Kuri Pinto

-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接