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

时间:2008-09-02 06:38:18

标签: c++ cocoa macos

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

6 个答案:

答案 0 :(得分:14)

我见过的两个有趣的选项,但尚未专业使用,是screencapture实用程序和MacFuse演示。

根据手册页,screencapture实用程序自10.2以来就已存在,并且可以使用NSTask链接到Cocoa应用程序。

MacFuse演示通过每次打开文件夹时创建新的屏幕截图或类似的东西来工作。您可以在需要时编写快速脚本来访问图像,而无需让脚本实际在该计算机上运行。

但严重的是,Apple还有一些名为“Son of Grab”的示例代码,它使用了新的CGWindow API,非常棒。

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

答案 1 :(得分:10)

实现此目的的一种方法是将NSTask与'screencapture'命令行命令结合使用。

例如:

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

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

您可以打开文件,无论您将其保存在哪里,进行处理,然后根据需要将其删除。显然是权宜之计,但它会奏效。

答案 2 :(得分:8)

如果您对Leopard兼容性很好,那么有一个非常强大的新CGWindow API可以让您抓取任何范围的窗口图层的屏幕截图,窗口镜头或复合材料。

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

答案 3 :(得分:3)

Qt在examples \ desktop \ screenshot中包含一个示例屏幕截图应用。 Qt适用于各种平台,包括MacOSX。

http://trolltech.com/products/qt/

答案 4 :(得分:1)

如果您尝试使用C ++或python完成此操作,以下内容可能会有所帮助。此外,如果您希望程序化方法可以跨平台移植,这将更有帮助。 (Windows,Linux,Mac osx,甚至更远)

之前的回应提及QT。

与QT允许捕获和保存屏幕截图的方式相同,另一个“竞争”框架,即wxWidgets也是如此。 wxWidgets是一个C ++框架,但它也通过wxPython提供python绑定。

要了解详情,请使用以下链接,在图书中搜索 wxScreenDC ,然后从与搜索匹配的网页列表中选择“Page 139”:

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

答案 5 :(得分:-1)

如果你考虑使用REALbasic,这对于RB和MBS插件来说非常容易。我刚刚编写了一个使用RB和MBS插件进行定时屏幕截图的应用程序。您可以在此处阅读:http://tektalkin.blogspot.com/2008/08/screenaudit-for-mac-osx.html