Sie müssen Ihre Frage klären. Das Skript in meiner Antwort funktioniert für eine gegebene Definition von "funktioniert", dh es gibt genau an, ob Finder an vorderster Stelle steht oder nicht.
Tetsujin
@ Tetsujin aktualisiert
William
Wie werden Sie die Applescript-App starten? Wenn Sie darauf doppelklicken, wird der Finder natürlich immer als "Vorletzter" angezeigt. Ändern der Antwort - dies funktioniert, wenn es vom Skript-Editor aufgerufen wird, aber "schlägt fehl", wenn im Finder doppelt geklickt wird, da es ein falsch-positives
Ergebnis
Antworten:
18
Dies funktioniert, wenn das Skript vom Skript-Editor aus aufgerufen wird, da es „aus dem Weg geht“, um die nächste App in der Zeile zu überprüfen. Wenn Sie im Finder doppelt darauf klicken, schlägt dies fehl, da der Finder dann immer in der letzten Zeile ist.
tell application "System Events"
set frontmostProcess to first process where it is frontmost
set visible of frontmostProcess to false
repeat while (frontmostProcess is frontmost)
delay 0.2
end repeat
set secondFrontmost to name of first process where it is frontmost
set frontmost of frontmostProcess to true
end tell
tell application (path to frontmost application as text)
if "Finder" is in secondFrontmost then
display dialog ("Finder was last in front")
else
display dialog (secondFrontmost & " was last in front")
end if
end tell
Lassen Sie die vorherige Antwort hier für die Nachwelt
Komplette Antwort neu zusammengestellt, nachdem die Frage anfangs nicht richtig gelesen wurde ;-)
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "Finder" is in activeApp then
display dialog ("test")
else
display dialog ("test2")
end if
end tell
+1 Obwohl Ihre vorgeschlagene Lösung nicht so zu funktionieren scheint, wie sie ist. Ich erhalte "test", solange die Anwendung geöffnet ist und nicht unbedingt, ob sie aktiv ist oder nicht.
William
Ein Umdenken ... bearbeitete Antwort
Tetsujin
Vollständiges Neuschreiben, jetzt bin ich wieder auf meinem Desktop - das macht jetzt genau das, wonach Sie gefragt haben.
Tetsujin
2
Sie können auch den zweiten Dialogbefehl durch ersetzen display dialog (activeApp), um genau zu bestätigen, was das Skript für das vorderste hält.
Kent
1
Gehen Sie dabei vorsichtig vor - die Namen einiger Apps (z. B. tell application "app_name") unterscheiden sich von den Prozessnamen (z set frontmost of process "app_process" to true. B. ).
Antworten:
Dies funktioniert, wenn das Skript vom Skript-Editor aus aufgerufen wird, da es „aus dem Weg geht“, um die nächste App in der Zeile zu überprüfen. Wenn Sie im Finder doppelt darauf klicken, schlägt dies fehl, da der Finder dann immer in der letzten Zeile ist.
Lassen Sie die vorherige Antwort hier für die Nachwelt
Komplette Antwort neu zusammengestellt, nachdem die Frage anfangs nicht richtig gelesen wurde ;-)
quelle
display dialog (activeApp)
, um genau zu bestätigen, was das Skript für das vorderste hält.tell application "app_name"
) unterscheiden sich von den Prozessnamen (zset frontmost of process "app_process" to true
. B. ).