如何在Mac OS X中使用Cocoa或者C ++截屏
如何在Mac OS X中以编程方式拍摄桌面区域的屏幕快照?
解决方案
回答
Qt在examples \ desktop \ screenshot中包含一个示例屏幕快照应用程序。 Qt可在包括MacOSX在内的各种平台上运行。
http://trolltech.com/products/qt/
回答
如果考虑使用REALbasic,则使用RB和MBS插件非常容易。我刚刚编写了一个使用RB和MBS插件对屏幕截图进行定时的应用程序。我们可以在这里阅读有关内容:http://tektalkin.blogspot.com/2008/08/screenaudit-for-mac-osx.html
回答
我已经看到了两个有趣的选项,但尚未专业使用,它们是screencapture实用程序和MacFuse演示。
根据手册页,screencapture实用程序自10.2起就存在,可以使用NSTask链接到Cocoa应用程序。
MacFuse演示的工作原理是,每次打开文件夹或者类似的操作时都会创建一个新的屏幕截图。这样的想法是,我们可以编写一个快速脚本来在需要时访问该图像,而不必在该计算机上实际运行该脚本。
但是,很严重的是,苹果公司还有其他一些示例代码,称为" Son of Grab",它使用了新的CGWindow API,它非常棒。
http://developer.apple.com/samplecode/SonOfGrab/
回答
如果我们尝试使用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"
回答
进行此操作的一种方法是将NSTask与" screencapture"命令行命令结合使用。
例如:
NSTask *theProcess; theProcess = [[NSTask alloc] init]; [theProcess setLaunchPath:@"/usr/sbin/screencapture"]; // use arguments to set save location [theProcess setArguments:@"blahblah"]; [theProcess launch];
我们可以在告诉保存的位置打开文件,进行处理,然后根据需要将其删除。显然是权宜之计,但是可以。
回答
如果我们对Leopard的兼容性感到满意,则可以使用非常强大的新CGWindow API,该API可以让我们抓取屏幕截图,窗口截图或者任何范围的窗口层的合成。
http://developer.apple.com/samplecode/SonOfGrab/