Eine frohe Adventszeit wünscht Apfeltalk
  • Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Unser Dezember-Wettbewerb steht unter dem Thema Zeitreise - Macht mit und beteiligt Euch mit Euren kreativen Fotos! Zum Wettbewerb --> Klick

Tom___Tom

Idared
Registriert
29.05.21
Beiträge
26
Hallihallo,

soeben war ich dabei eine Ordneraktion zu schreiben, diese Funktioniert soweit auch komplett zuverlässig.
Wichtig: ich habe die Aktion mit Apple Script (AS) geschrieben da ich die Funktion „on opening Folder… „ genutzt habe.

Der Ordner der Aktion liegt auf dem Schreibtisch und wenn ich ihn durch Doppelklick öffne wird die Aktion problemlos ausgeführt.
Wenn ich nun aber ein neues Finder Fenster öffne, in der Seitenleiste auf Schreibtisch klicke und in der Ansicht, in der man den Ordner auch ohne Doppelklick einsehen kann, den Ordnerinhalt anschaue, wird dabei die Ordneraktion nicht ausgeführt.

Nun stellt sich für mich die Frage, ist das normal/gehört das so? Wie machte Ich, das auch hierbei dir Aktion ausgelöst wird?

Danke für eure Antworten.
Liebe Grüße
Tom
 

sedna

Schweizer Glockenapfel
Registriert
22.10.08
Beiträge
1.371
Hallo,
ist das normal/gehört das so?
Ja, das ist so definiert:
Der event-handler opening folder wird nur aufgerufen, wenn der Ordner in einem neuen Finder Fenster geöffnet wird.


Wie machte Ich, das auch hierbei dir Aktion ausgelöst wird?
Du könntest eine Aktion nur auf eine andere Weise auslösen. Spontan fällt mir z.B. sowas ein:

Als App speichern (mit der Option "nach run-handler anzeigen") und starten:
AppleScript:
property x : 2
on idle
   
    try
        tell application "Finder"
            set sel to selection
            set myFolder to item 1 of sel as alias

            if myFolder is alias "macOS:Users:Tom:Desktop:derOrdner:" then
                if x mod 2 = 0 then
                    -- tue was z.B.:
                    display dialog "!"
                    set x to x + 1
                end if
            else
                if x mod 2 = 1 then
                    set x to x + 1
                end if        
            end if
        end tell
       
        return 1
    on error
        -- "Abbrechen"
        tell me to quit
    end try
end idle

Ein on idle läuft, bis du die App wieder schließt (oder es hier bei einem Fehler beendet wird).
return 1 bedeutet, dass nach 1 Sekunde der nächste Durchlauf stattfindet.
Damit dein Code aber nur einmal ausgeführt wird, solange der Ordner ausgewählt ist, braucht es ein wenig Hirnschmalz. So sähe meine Lösung aus...

Da gibt es aber noch einige Eventualitäten: zum Beispiel könntest du ja mehrere Objekte (zb Ordner) in deinem Finder-Fenster ausgewählt haben..... usw.



Gruß
 

Tom___Tom

Idared
Registriert
29.05.21
Beiträge
26
Vielen Dank für die Hilfe, ich werde es mal so versuchen.