Как сделать снимок экрана в Mac OS X с помощью Cocoa или C ++ - PullRequest
19 голосов
/ 02 сентября 2008

Как сделать снимок экрана программной области рабочего стола в Mac OS X?

Ответы [ 6 ]

14 голосов
/ 03 сентября 2008

Два интересных варианта, которые я видел, но еще не использовал профессионально, - это утилита screencapture и демонстрация MacFuse.

Утилита screencapture существует с 10.2, согласно странице руководства, и может быть связана с приложением Cocoa с помощью NSTask.

Демонстрация MacFuse работала, создавая новый скриншот каждый раз, когда открывалась папка, или что-то в этом роде. Идея в том, что вы могли бы написать быстрый скрипт для доступа к изображению, когда вам это нужно, без необходимости запускать скрипт на этом компьютере.

А если серьезно, у Apple есть еще один пример кода под названием «Сын Граба», в котором используется новый API CGWindow, который довольно хорош.

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

10 голосов
/ 16 сентября 2008

Один из способов сделать это - использовать NSTask в сочетании с командой командной строки 'screencapture'.

Например:

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

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

Вы можете открыть файл там, где вы сказали, что он будет сохранен, обработать его, а затем удалить его при необходимости. Очевидно, что пробел, но это сработает.

8 голосов
/ 17 сентября 2008

Если у вас все в порядке с совместимостью с Leopard, есть очень мощный новый CGWindow API, который позволит вам делать снимки экрана, снимки окон или композиции любого диапазона оконных слоев.

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

3 голосов
/ 02 сентября 2008

Qt включает пример приложения скриншота в examples \ desktop \ screenshot. Qt работает на различных платформах, включая MacOSX.

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

1 голос
/ 16 сентября 2008

Следующее может быть полезно, если вы пытаетесь сделать это с помощью C ++ или python. Кроме того, это было бы еще более полезно в том случае, если вы хотите, чтобы ваш программный метод был кроссплатформенным переносимым. (Windows, Linux, Mac OSX и даже за ее пределами)

В предыдущем ответе упоминается QT.

Точно так же, как QT позволит вам делать снимки и сохранять скриншоты, так же, как и другой «конкурирующий» фреймворк, а именно wxWidgets. wxWidgets - это фреймворк C ++, но он также предоставляет привязки к Python через wxPython.

Чтобы узнать больше, воспользуйтесь следующей ссылкой, найдите в книге wxScreenDC и выберите «Страница 139» из списка страниц, соответствующих запросу:

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

0 голосов
/ 02 сентября 2008

Если вы считаете REALbasic, это очень легко сделать с помощью RB и плагинов MBS. Я только что написал приложение, которое делает временные снимки экрана с использованием RB и плагинов MBS. Вы можете прочитать об этом здесь: http://tektalkin.blogspot.com/2008/08/screenaudit-for-mac-osx.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...