Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在MacOSX中使用Cocoa或C++;_C++_Cocoa_Macos - Fatal编程技术网

C++ 如何在MacOSX中使用Cocoa或C++;

C++ 如何在MacOSX中使用Cocoa或C++;,c++,cocoa,macos,C++,Cocoa,Macos,如何在Mac OS X中以编程方式拍摄桌面区域的屏幕截图?Qt在examples\desktop\screenshot中包含一个示例屏幕截图应用程序。Qt在一系列平台上工作,包括MacOSX 如果你考虑REALbasic,这对于RB和MBS插件非常容易。我刚刚编写了一个应用程序,它使用RB和MBS插件进行定时截图。您可以在这里阅读:我看到过两个有趣的选项,但尚未专业使用,它们是屏幕捕获实用程序和MacFuse演示 根据手册页,截屏工具从10.2开始就存在,可以通过使用NSTask链接到Coco

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

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


如果你考虑REALbasic,这对于RB和MBS插件非常容易。我刚刚编写了一个应用程序,它使用RB和MBS插件进行定时截图。您可以在这里阅读:

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

根据手册页,截屏工具从10.2开始就存在,可以通过使用NSTask链接到Cocoa应用程序

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

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


< P>如果你试图用C++或Python来完成,下面的内容可能会有帮助。此外,如果您希望编程方法能够跨平台移植,这将更有帮助。(Windows、Linux、Mac osx甚至更高版本)

早些时候的回复提到了QT

与QT允许您捕获和保存屏幕截图的方式相同,另一个“竞争性”框架,即wxWidgets也可以这样做。WxWIDGET是一个C++框架,但它也通过WXPython提供了Python绑定。 要阅读更多内容,请使用以下链接,在书中搜索wxScreenDC,然后从与搜索匹配的页面列表中选择“第139页”:


实现这一点的一种方法是将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,可以让您抓取屏幕截图、窗口截图或任意范围窗口层的组合


谢谢!下面是代码:wxBitmap GetScreenShot(){wxSize screenSize=wxGetDisplaySize();wxBitmap位图(screenSize.x,screenSize.y);wxScreenDC dc dc;wxMemoryDC memDC;memDC.SelectObject(位图);memDC.Blit(0,0,screenSize.x,screenSize.y,&dc,0,0);memDC.SelectObject(wxNullBitmap);返回位图;}