如何在Mac OS X中以編程方式在桌面區域截取屏幕截圖?如何在Mac OS X中使用Cocoa或C++進行屏幕截圖
回答
Qt在examples \ desktop \ screenshot中包含一個示例截圖應用程序。 Qt適用於各種平臺,包括MacOSX。
如果你考慮REALbasic的,這是非常容易與RB和MBS插件做。我剛剛編寫了一個應用程序,使用RB和MBS插件進行時間截圖。你可以在這裏閱讀:http://tektalkin.blogspot.com/2008/08/screenaudit-for-mac-osx.html
我見過的兩個有趣的選項,但還沒有專業使用的是screencapture實用程序和MacFuse演示。
根據手冊頁,screencapture實用程序自10.2版本開始運行,並且可以通過使用NSTask鏈接到Cocoa應用程序。
MacFuse演示通過每次打開文件夾時創建一個新的屏幕截圖來工作,或類似的東西。當你需要它時,你可以編寫一個快速腳本來訪問映像,而不必讓該腳本實際在該機器上運行。
但是,嚴重的是,蘋果公司還有一些其他的示例代碼叫做「Son of Grab」,它使用了新的CGWindow API,這非常棒。
下,如果你嘗試用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"
一個去約的方式這樣做就是使用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,它可以讓您抓取屏幕截圖,窗口截圖或任何範圍窗口圖層的組合。
非常好,感謝您指出這一點! – 2011-08-22 06:17:15
- 1. 如何在Mac OS X中使用Cocoa和CGDisplayCreateImageForRect獲取區域截圖?
- 2. 凍結Cocoa中的OS X屏幕
- 3. 如何在Mac OS X上使用Haskell捕獲屏幕?
- 4. 在C#中使用HtmlAgilityPack進行屏幕截圖
- 5. 如何使用dylib在Mac OS X(C++)
- 6. 使用虛擬鍵使用C++進行屏幕截圖
- 7. 如何在Mac OS X上截取忽略應用程序窗口的區域的屏幕截圖
- 8. 僅在應用程序窗口中使用mac進行屏幕截圖
- 9. 如何在Mac OS x中更改屏幕亮度?
- 10. 如何使用Mac OS X Cocoa事件進行多點觸控手勢
- 11. C++屏幕截圖
- 12. C++截取屏幕截圖
- 13. 使用c#進行屏幕截圖,包括任務欄。
- 14. Mac OS X Lion全屏幕事件
- 15. 如何更改Java程序中的「關於」Mac OS X屏幕?
- 16. 如何在Mac OS X上的雙屏幕上顯示Lion
- 17. 使用Python/Scrapy/Urllib2進行屏幕截圖似乎被屏蔽
- 18. 在Mac OS X應用程序中調整屏幕亮度
- 19. OS X,屏幕鎖
- 20. 如何在OS X上畫屏幕?
- 21. 使用c#截取屏幕截圖使用c#
- 22. 在iOS 8中使用Objective C截取屏幕截圖doesn'work
- 23. 如何使用CameraView在Android中截取屏幕截圖(SurfaceView)
- 24. 在Mac OS X上使用matplotlib進行非交互式繪圖
- 25. 從Python中運行OS X中的Google Chrome瀏覽器的屏幕截圖
- 26. 如何在Mac 10.9中粘貼屏幕截圖?
- 27. 如何使用MATLAB在任何屏幕上執行屏幕截圖?
- 28. Objective-C串行 - Mac OS X
- 29. SpriteKit屏幕截圖的屏幕截圖
- 30. C++ Windows屏幕截圖
謝謝!這裏是代碼: 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