Sonofgrab menunjukkan CGWindow API untuk mengambil isi set jendela sewenang -wenang.
Inti dari sampel ini adalah 5 metode pada kelas pengontrol, yang dijelaskan di bawah ini.
-PdateWindowlist Metode ini mendapatkan daftar jendela saat ini dari server jendela. Opsi di GUI memungkinkan Anda untuk mengecualikan jendela offscreen dan elemen desktop. Daftar yang dikembalikan dari server jendela diproses lebih lanjut (melalui callback WindowListApplierFunction) untuk menghasilkan daftar yang disajikan dalam GUI.
-CreatesingLeWindowShot menciptakan screen shot relatif terhadap CGWindowId tunggal yang dilewatkan. Tergantung pada "opsi jendela tunggal" yang ditentukan dalam GUI, screen shot dapat mencakup sejumlah jendela lain dan mungkin atau mungkin tidak termasuk jendela yang benar -benar diteruskan ke metode ini.
-CreateMultiWindowShot membuat tangkapan layar dengan jendela -jendela yang lewat. Menggunakan metode -createWindowlistFromSelection untuk membuat cfarrayref yang kompatibel yang menentukan jendela untuk membuat gambar dari.
-CreatesCreenshot membuat tangkapan layar dari semua jendela yang saat ini di layar dan dapat dibaca.
-CreateWindowlistFromSelection mengubah pilihan GUI dari Windows menjadi CFArrayRef yang menentukan daftar Windows yang tepat untuk diterjemahkan dan urutan untuk menerimanya.
CGWindow API mampu menangani masalah umum yang mungkin Anda temui dalam praktik, umumnya kembali nol jika tidak mungkin untuk menghubungi server jendela, atau gambar transparan penuh ketika tidak mungkin untuk menyusun gambar dari daftar yang diberikan. Komentar di cgwindow.h membahas dengan sangat rinci tentang kasus sudut dan masalah lain yang mungkin Anda temukan dalam menggunakan API ini dan sangat berharga dalam memahami apa yang akan terjadi dalam banyak kasus penggunaan umum.
API CGWindow menyediakan CGIMAGEREF yang data dukungannya dibuat sesuai permintaan oleh server jendela saat pertama kali diterjemahkan, dan dengan demikian Anda dapat meminta sejumlah besar gambar tanpa mengambil hit kinerja sampai gambar diberikan. Jika Anda menangkap sejumlah besar gambar, Anda akan melihat waktu yang diperlukan untuk membuat gambar yang dihabiskan dalam proses Windowserver, dan Anda harus menyadari bahwa sementara CGWindowlistCreateImage akan kembali dengan cepat. Menggambar gambar untuk pertama kalinya cenderung mengkonsumsi lebih banyak waktu daripada yang Anda harapkan untuk gambar dari sumber lain.
Kode sampel dapat dikonfigurasi ke waktu operasinya dengan mengatur profil_window_grab ke 1. Definisi makro ini default ke 0 di file sumber pengontrol.m.
Untuk informasi lebih lanjut tentang CGWindow API, lihat referensi "Quartz Window Services" (https://developer.apple.com/library/mac/documentation/carbon/reference/cgwindow_reference/).
OS X 10.10 SDK atau lebih baru
OS X 10.8 atau lebih
Versi 2.0
Versi 1.0
===========================================================.