Frage

Wie erhalte ich die aktuelle Hintergrundbild auf einem Mac? zeigen Sie mir nur eine API-Funktion, so kann ich mehr Google.

Edit: Ich denke, dass ich es gefunden habe. [NSUserDefaults standardUserDefaults] erwähnt unter http://lists.apple.com /archives/student-dev/2004/Aug/msg00140.html

Auch möglich von Shell: Standardwerte lesen com.apple.desktop Hintergrund

Und von Applescript: http://discussions.apple.com/thread.jspa?messageID=7111272

War es hilfreich?

Lösung

Aktualisiert Antwort (Mavericks und neue)

Beginnend mit Mavericks, schreibt Apple die Desktop-Bilder, die auf

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

, die eine SQLite-Datenbank. Sie können wie folgt diese Datei im Terminal öffnen

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

und führen Sie dann die folgende 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 ;

Der Ausgang wird

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

UID1 ist die UID eines Displays (zB dem Display Ihres MacBook, ein externes Display, etc., wie jedes Display kann ein eigenes Hintergrundbild haben), UID2 optional ist (manchmal wird es fehlt, was wahrscheinlich bedeutet, dass alle Räume dass Display) und es ist die UID eines Raumes (jede Anzeige auf OS X können mehrere Räume haben und jeder Raum kann einen eigenen Hintergrund iamge haben) und <PicturePath> ist der Pfad zu dem Bild (für diesen speziellen Raum auf diesem speziellen Display).

Natürlich können Sie Ihre App gegen die SQLite-Bibliothek verknüpfen und tun, dass alle mit Bibliothek Anrufen, aber wie für Abfragen SQLite und die SQL-Syntax zu verwenden und Aktualisieren von Daten sind, natürlich, Art und Weise über den Rahmen dieser . Antwort Nur ein Tipp:. Sie verlassen den sqlite Client von .exit (! beachten Sie den führenden Punkt) eingeben und drücken Sie die Eingabetaste (STRG + C wird nicht funktionieren)

Nur noch ein Hinweis: Sie können die Datenbank in Ihrer App aktualisieren, aber das wird keine Wirkung als das Dock hat darüber nicht wissen (Sie es hinter seinem Rücken aus). Um das Dock bewusst, dass Änderungen vornehmen, haben Sie töten es wie killall Dock, kann es genug sein, um nur HUP es (killall -HUP Dock), die es nicht wirklich töten (ich habe nicht getestet, dass). Innerhalb einer App, dann würden Sie die Prozess-ID des Dock finden müssen und sie ein Signal senden (dies ist der gleiche ist, dass killall der Fall ist), Prozess-IDs erhalten und Senden von Signalen ist auch über den Rahmen dieser Antwort.

Legacy-Antwort (Lion und früher)

Sie befinden sich auf dem richtigen Weg sind. Wenn Sie eine Anwendung in Kohlenstoff / Cocoa schreiben, laden Sie einfach die Einstellungsdatei. Es befindet sich in

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

Das Wörterbuch enthält eine Unterwörterbuch mit dem Schlüssel default und dieser Unter Wörterbuch enthält einen Schlüssel ImageFilePath, den absoluten Pfad zur Bilddatei enthält.

Andere Tipps

Sie können es in der Schale tun + Applescript wie folgt aus:

#!/bin/bash
osascript -e 'tell app "finder" to get posix path of (get desktop picture as alias)'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top