代码之家  ›  专栏  ›  技术社区  ›  pirho

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

  •  19
  • pirho  · 技术社区  · 16 年前

    如何在mac os x中对桌面区域进行程序截图?

    6 回复  |  直到 10 年前
        1
  •  13
  •   Mark Bell    16 年前

    两个有趣的选择,我已经看到,但尚未使用专业,是截屏实用程序和MacFuse演示。

    根据手册页的介绍,screencapture实用程序从10.2开始就存在了,可以通过使用nstask链接到cocoa应用程序。

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

    但是说真的,苹果还有一些其他的示例代码叫做“抓取之子”,它使用了新的cgwindow api,非常棒。

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

        2
  •  10
  •   Takako Shimizu    16 年前

    这样做的一种方法是将nstask与“screencapture”命令行命令结合使用。

    例如:

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

    您可以在告诉保存文件的任何位置打开该文件,对其进行处理,然后根据需要将其删除。显然是权宜之计,但它会奏效的。

        3
  •  8
  •   Michael Rondinelli    16 年前

    如果您对leopard的兼容性很好,那么有一个非常强大的新cgwindow api,它可以让您抓取屏幕快照、窗口快照或任何范围的窗口层的组合。

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

        4
  •  3
  •   Andy Brice    16 年前

    qt在examples\desktop\screenshot中包含一个示例屏幕截图应用程序。qt在一系列平台上工作,包括macosx。

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

        5
  •  1
  •   pestophagous    10 年前

    如果您试图用C++或Python来完成这一点,下面的内容可能会有帮助。另外,如果您希望编程方法是跨平台可移植的,这将更加有用。(Windows、Linux、MacOSX甚至更高版本)

    先前的回应提到qt。

    与qt允许您捕获和保存屏幕截图的方式相同,另一个“竞争”框架(即wxwidgets)也是如此。WxWIDGET是一个C++框架,但它还通过WxPython提供Python绑定。

    要阅读更多内容,请使用以下链接,在书中搜索 WXSCRANDEC 并从与搜索匹配的页面列表中选择“第139页”:

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

        6
  •  -1
  •   stevechol    16 年前

    如果考虑realbasic,使用rb和mbs插件非常容易。我刚刚编写了一个应用程序,它使用rb和mbs插件进行定时截图。你可以在这里读到: http://tektalkin.blogspot.com/2008/08/screenaudit-for-mac-osx.html