Necesitas aclarar tu pregunta. El script en mi respuesta funciona, para una definición dada de 'funciona', es decir, informa con precisión si Finder es el primero o no.
Tetsujin
@Tetsujin actualizado
William
¿Cómo va a iniciar la aplicación Applescript? Hacer doble clic en él, por supuesto, siempre mostrará el Finder como el "segundo al último" en primer plano. Cambio de respuesta: esto funcionará si se llama desde el Editor de secuencias de comandos, pero 'falla' si se hace doble clic en Finder, ya que da un falso positivo
Tetsujin
Respuestas:
18
Esto funcionará si se llama a la secuencia de comandos desde el Editor de secuencias de comandos, ya que 'se sale del camino' para verificar la siguiente aplicación en línea, pero fallará si se hace doble clic desde Finder, ya que Finder siempre será el último en la línea.
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
Dejando la respuesta anterior aquí para la posteridad
Reajusté la respuesta completa después de no haber leído la pregunta correctamente inicialmente ;-)
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 Aunque su solución propuesta no parece funcionar como es. Recibo "prueba" siempre que la aplicación esté abierta y no necesariamente si está activa o no.
William
un replanteamiento ... respuesta editada
Tetsujin
reescribir completamente, ahora estoy de vuelta en mi escritorio, esto ahora hace exactamente lo que me pediste.
Tetsujin
2
También puede reemplazar el segundo comando de diálogo con display dialog (activeApp)para confirmar exactamente lo que el script piensa que es el más importante.
Kent
1
Tenga cuidado con esto: los nombres de las aplicaciones de algunas aplicaciones (por ejemplo, tell application "app_name") difieren de los nombres de sus procesos (por ejemplo, set frontmost of process "app_process" to true).
Respuestas:
Esto funcionará si se llama a la secuencia de comandos desde el Editor de secuencias de comandos, ya que 'se sale del camino' para verificar la siguiente aplicación en línea, pero fallará si se hace doble clic desde Finder, ya que Finder siempre será el último en la línea.
Dejando la respuesta anterior aquí para la posteridad
Reajusté la respuesta completa después de no haber leído la pregunta correctamente inicialmente ;-)
fuente
display dialog (activeApp)
para confirmar exactamente lo que el script piensa que es el más importante.tell application "app_name"
) difieren de los nombres de sus procesos (por ejemplo,set frontmost of process "app_process" to true
).