2008-09-02 63 views

回答

13

我見過的兩個有趣的選項,但還沒有專業使用的是screencapture實用程序和MacFuse演示。

根據手冊頁,screencapture實用程序自10.2版本開始運行,並且可以通過使用NSTask鏈接到Cocoa應用程序。

MacFuse演示通過每次打開文件夾時創建一個新的屏幕截圖來工作,或類似的東西。當你需要它時,你可以編寫一個快速腳本來訪問映像,而不必讓該腳本實際在該機器上運行。

但是,嚴重的是,蘋果公司還有一些其他的示例代碼叫做「Son of Grab」,它使用了新的CGWindow API,這非常棒。

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

1

下,如果你嘗試用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"

+1

謝謝!這裏是代碼: wxBitmap GetScreenShot() wxSize screenSize = wxGetDisplaySize(); wxBitmap位圖(screenSize.x,screenSize.y); wxScreenDC dc; wxMemoryDC memDC; memDC.SelectObject(bitmap); memDC.Blit(0,0,screenSize.x,screenSize.y,&dc,0,0); memDC.SelectObject(wxNullBitmap); 返回位圖; } – 2013-07-03 22:16:08

9

一個去約的方式這樣做就是使用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

如果您對Leopard兼容性不錯,那麼您將擁有一個非常強大的全新CGWindow API,它可以讓您抓取屏幕截圖,窗口截圖或任何範圍窗口圖層的組合。

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

+0

非常好,感謝您指出這一點! – 2011-08-22 06:17:15

相關問題