الحصول على خلفية سطح المكتب على نظام التشغيل Mac

StackOverflow https://stackoverflow.com/questions/301215

سؤال

وكيف أحصل على خلفية الحالي على ماك؟ مجرد نقطة لي أن وظيفة API حتى أستطيع أن غوغل أكثر.

وتحرير: أعتقد أنني وجدت ذلك. [NSUserDefaults standardUserDefaults] المذكورة في http://lists.apple.com /archives/student-dev/2004/Aug/msg00140.html

وأيضا من الممكن من قذيفة: التخلف قراءة الخلفية com.apple.desktop

ومن ابليسكريبت: http://discussions.apple.com/thread.jspa؟messageID=7111272

هل كانت مفيدة؟

المحلول

تحديث الجواب (دالاس مافريكس وأحدث)

وبدءا مافريكس، أبل يكتب صور سطح المكتب ل

/Users/<current-user>/Application Support/Dock/desktoppicture.db 

والذي هو قاعدة بيانات SQLite. يمكنك فتح هذا الملف في المحطة مثل هذا

sqlite3 "/Application Support/Dock/desktoppicture.db"

ووتشغيل ثم يلي SELECT:

SELECT display_uuid,space_uuid,value 
FROM preferences 
JOIN data ON preferences.data_id=data.ROWID 
JOIN pictures ON preferences.picture_id=pictures.ROWID
JOIN displays ON pictures.display_id=displays.ROWID 
JOIN spaces ON pictures.space_id=spaces.ROWID ;

وسوف يكون الإخراج

<UID1>|<UID2>|<PicturePath>
<UID1>|<UID2>|<PicturePath>
:

وUID1 هو UID من عرض (على سبيل المثال عرض ماك بوك الخاص بك، عرض خارجي، وما إلى ذلك كل عرض يمكن أن يكون صورة الخلفية الخاصة)، UID2 هو اختياري (في بعض الأحيان كان مفقودا، وهو ما يعني على الأرجح عن فضاءات هذا العرض)، وأنه هو UID من مساحة (كل عرض على OS X يمكن أن يكون المسافات المتعددة وكل مساحة يمكن أن يكون لها iamge الخلفية الخاصة) و<PicturePath> هو المسار إلى الصورة (لهذا الفضاء بشكل خاص على هذا العرض معين).

وبالطبع يمكنك ربط التطبيقات الخاص بك ضد مكتبة سكليتي وتفعل كل ذلك مع المكالمات مكتبة، ولكن كيفية استخدام برنامج SQLite وبناء الجملة SQL للاستعلامات وتحديث البيانات، بطبيعة الحال، <م> الطريق خارج نطاق هذا . الجواب واحد فقط غيض: هل خروج العميل sqlite بكتابة .exit (! لاحظ فترة الرائدة) وهاهنا (وCTRL + C لا تعمل)

واحد فقط أكثر ملاحظة: يمكنك تحديث قاعدة البيانات في التطبيق الخاص بك، ولكن هذا لن يكون له أي تأثير كما قفص الاتهام لن تعرف عن ذلك (تقوم بتغييره وراء ظهرها). لجعل حوض بينة من هذا التغيير، لديك قتله مثل killall Dock، قد يكون كافيا لمجرد HUP عليه (killall -HUP Dock)، والذي لن يقتل حقا (أنا لم تختبر ذلك). ضمن التطبيق، عليك أن تجد معرف العملية من قفص الاتهام وإرساله إشارة (هذا هو نفسه الذي killall لا)، والحصول على معرفات العملية وإرسال إشارات هو أيضا خارج نطاق هذا الرد.

تراث الجواب (الأسد وأقدم)

وأنت على الطريق الصحيح. إذا كنت أكتب تطبيق في الكربون / الكاكاو، مجرد تحميل ملف التفضيل. وهي تقع في

/Users/<current-user>/Library/Preferences/com.apple.desktop.plist

والقاموس يحتوي على-القاموس الفرعية مع default مفتاح وهذا القاموس الفرعية يحتوي على ImageFilePath مفتاح، تحتوي على المسار المطلق لملف الصورة.

نصائح أخرى

ويمكنك أن تفعل ذلك في قذيفة + ابليسكريبت مثل هذا:

#!/bin/bash
osascript -e 'tell app "finder" to get posix path of (get desktop picture as alias)'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top