Mac OS Xでデスクトップ領域のスクリーンショットをプログラムで撮る方法は?
6 に答える
私が見たことがあるが、まだ専門的に使用していない 2 つの興味深いオプションは、スクリーン キャプチャ ユーティリティと MacFuse デモです。
man ページによると、screencapture ユーティリティは 10.2 から存在しており、NSTask を使用して Cocoa アプリケーションにリンクすることができます。
MacFuse のデモは、フォルダが開かれるたびに新しいスクリーンショットを作成するなどして動作しました。スクリプトを実際にそのマシンで実行することなく、必要なときにイメージにアクセスするための簡単なスクリプトを作成できるという考えです。
しかしまじめな話、Apple には「Son of Grab」と呼ばれる新しい CGWindow API を使用した別のサンプル コードがあります。
これを行う 1 つの方法は、「screencapture」コマンド ライン コマンドと組み合わせて NSTask を使用することです。
例えば:
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 があり、スクリーン ショット、ウィンドウ ショット、または任意の範囲のウィンドウ レイヤーの合成を取得できます。
Qt には、examples\desktop\screenshot にサンプル スクリーンショット アプリが含まれています。Qt は、MacOSX を含むさまざまなプラットフォームで動作します。
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"
REALbasic を考えると、これは RB と MBS プラグインで非常に簡単に行うことができます。RB と MBS プラグインを使用して時間指定のスクリーンショットを作成するアプリケーションを作成しました。ここでそれについて読むことができます: http://tektalkin.blogspot.com/2008/08/screenaudit-for-mac-osx.html