• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Autosave

tfj

Erdapfel
Registriert
26.06.13
Beiträge
4
Hi Forum,
neulich ist mir doch glatt Photoshop nach ein paar Stunden Arbeit abgestürzt.
Da dachte ich, ich schreib (eher copy/paste aus dem Netz) ein Script, das das
für mich erledigt. Das ganze soll dann als Programm laufen (on run fehlt noch)
und 1. Photoshop starten, 2. etwa alle 10 min prüfen, ob Photoshop läuft, und
wenn ja, 3. speichern, oder wenn nicht, 4. script beenden.
Jetzt zur Frage. Kann man es so einrichten, daß der Speicherbefehl auch funktioniert,
wenn Photoshop im Hintergrund oder minimiert läuft? Im Moment wird immer nur
das aktive Programm zum Speichern aufgefordert. Ich finde es eher oll, wenn alle
10 min Photoshop in den Vordergrund ploppt, um gespeichert zu werden.
Code:
tell application "Adobe Photoshop CS5"
    activate
end tell
repeat
    tell application "System Events"
        delay 15
        set psd to false
        set procs to every process
        repeat with p from 1 to length of procs
            set psdtrue to (name of (item p of procs))
            if psdtrue is "Adobe Photoshop CS5" then
                set psd to true
            end if
        end repeat
        if psd is true then
            tell application "System Events"
                tell process "Adobe Photoshop CS5" to keystroke "s" using command down
            end tell
        else
            exit repeat
        end if
    end tell
end repeat

Grüße, Thomas
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Hallo Thomas,

Das Skript aus dem Netz ist unnötig kompliziert, probier mal folgendes Skript aus:

Code:
[B]on[/B] [COLOR=#0433FF][B]run
[/B][/COLOR]    [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Adobe Photoshop CS5"
[COLOR=#0433FF][COLOR=#000000]        [/COLOR][B]activate[/B][/COLOR]
        [COLOR=#012fbe][B]delay[/B][/COLOR] 600
    [B]end[/B] [B]tell[/B]
[B]end[/B] [COLOR=#0433ff][B]run[/B][/COLOR]


[COLOR=#0433FF][COLOR=#000000][B]on[/B] [/COLOR][B]idle[/B][/COLOR]
    [B]try[/B]
        [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Adobe Photoshop CS5" [B]to[/B] [COLOR=#0433ff][B]save[/B][/COLOR] [COLOR=#812fdc]current document[/COLOR]
    [B]end[/B] [B]try[/B]
    [B]return[/B] 600
[B]end[/B] [COLOR=#0433FF][B]idle[/B][/COLOR]

Das Skript musst du als Programm speichern mit der Option "Nach Run-Handler anzeigen". Es startet Photoshop und versucht dann alle 600s das aktive Dokument zu speichern. Es spielt dabei keine Rolle, ob das Programm im Vordergrund ist oder nicht.
 

tfj

Erdapfel
Registriert
26.06.13
Beiträge
4
Hallo Pill,
danke für die Antwort. Ich war kurz anderweitig unterwegs. Du hast natürlich recht, als AS-Anfänger landet man recht schnell in
der Win-Vista-Falle. Allerdings dachte ich mir, daß jmd, der vergißt zu speichert, sicherlich
nicht daran denkt, ein Script zu starten. Finaler Plan war also, das PS-Icon im Dock gegen
ein Scriptapplet auszutauschen.
Ich habe noch ein wenig weitergebastelt und beim Ausführen mit dem Editor funktionierts auch.
Wenn ich es allerdings als Programm exportiere, reagiert es seltsam. Bei Drag'n'Drop läufts, beim
Doppelklick kommt bei jedem Loop der Speichern unter ... Dialog.
Außerdem versuch ich immer noch, daß sich das Programm von selbst beendet, wenn der Prozess
"Photoshop" nicht mehr läuft.
Die aktuelle Version:
Code:
on run
	tell application "Adobe Photoshop CS5"
		activate
		set properties to {display dialogs:always}
		make new document
	end tell
end run

on open theFile
	tell application "Adobe Photoshop CS5"
		open theFile
	end tell
end open

on idle
	repeat
		tell application "System Events"
			delay 15 -- zu Testzwecken
			set psd to false
			set procs to every process
			repeat with p from 1 to length of procs
				set psdtrue to (name of (item p of procs))
				if psdtrue is "Adobe Photoshop CS5" then
					set psd to true
				end if
			end repeat
			if psd is true then
				tell application "Adobe Photoshop CS5" to save current document
			else
				exit repeat
			end if
		end tell
	end repeat
end idle

By the way, ich bekomm diesen code formatter aus dem Fischer-Bayern Forum nicht zum laufen, ist ja
auch schon uralt. Gibts da eine andere Lösung?
Versucht mit:
1.: OS X 10.8.5 - CodeFormatter 3.0 - Satimage392.pkg - ASEditor 2.5.1 - ja, Ich habs aus Scriptmenü gestartet
2.: OS X 10.8.5 - • CodeFormatter für phpBB2 - Tex-Edit Plus 4.9.17 G - ASEditor 2.5.1 - ja, Ich habs aus Scriptmenü gestartet
Danke/Grüße, Thomas
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

das mit dem Austauschen von Icons und starten von Photoshop mittels eines AppleScript ist eine wacklige Angelegenheit.
Ich persönlich starte Apps z.B. so gut wie nie über das Dock sondern mit Spotlight ...

Ich würde einen Launch Agent empfehlen, welcher im Hintergrund läuft, so gut wie keine Ressourcen braucht und alle so und so viele Sekunden ein Skript in dieser Art abfeuert:

Code:
tell application "System Events"
if ((bundle identifier of processes) contains "com.adobe.Photoshop") then
try
tell application "Adobe Photoshop CS5" to save current document
end try
end if
end tell


Den Codeformatter braucht man doch hier gar nicht?
(WYSIWYG Editor zum Antworten aktivieren)

wysiwyg.jpg

set x to beep


Gruß