20

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

4

6 回答 6

14

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

根据手册页,screencapture 实用程序从 10.2 开始就已经存在,并且可以通过使用 NSTask 链接到 Cocoa 应用程序。

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

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

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

于 2008-09-02T20:25:08.417 回答
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];

你可以在任何你告诉它保存的地方打开文件,处理它,然后根据需要删除它。显然权宜之计,但它会起作用。

于 2008-09-15T23:08:08.553 回答
10

如果你对 Leopard 的兼容性很好,有一个非常强大的新 CGWindow API,它可以让你抓取屏幕截图、窗口截图或任何范围的窗口层的合成。

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

于 2008-09-16T21:46:49.507 回答
4

Qt 在examples\desktop\screenshot 中包含一个示例截图应用程序。Qt 适用于一系列平台,包括 MacOSX。

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

于 2008-09-02T07:44:30.507 回答
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"

于 2008-09-15T22:56:18.770 回答
-2

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

于 2008-09-02T08:14:40.093 回答