AppleScript activa la aplicación

¿Cómo podría ejecutar el código (por ejemplo display dialog("test")) usando AppleScript solo si la aplicación "Finder" está actualmente enfocada/activa?

Um, si la aplicación ya está activa, ¿qué pretende lograr activándola nuevamente?
stackoverflow.com/questions/3718520/… inactivo es relevante aunque no resuelve el problema.
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 está al frente o no.
@Tetsujin actualizado
¿Cómo vas a lanzar la aplicación Applescript? Al hacer doble clic en él, por supuesto, siempre se mostrará el Finder como el 'penúltimo' al frente. 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 Ese es el problema al que me estoy enfrentando.
¿Puedo preguntar por qué necesita verificar periódicamente si el Finder está/estaba al frente? Parecería mucho más fácil disparar un Applescript para traerlo al frente y salir... o simplemente hacer clic en él.
@Tetsujin Me gustaría un ícono en el muelle que haga un "AvPág" cuando se haga clic en él. key code (insert code here)funciona, pero no se puede saber de antemano en qué aplicación se centra.
@Tetsujin Te has esforzado lo suficiente. Estoy convencido de que lo que busco es posible en AppleScript.
dígale a la aplicación "cualquiera que sea" que active \n dígale a la aplicación "Eventos del sistema" que introduzca el código... termine dígale, etc... & ty para los puntos de la Respuesta.
@Tetsujin Ese es el punto, no sé qué aplicación es. Preferiría que el icono PageDown funcionara en cualquier aplicación.
entonces todo lo que necesita es decirle a la aplicación que está en segundo lugar... Cualquiera que sea, ya que mi Applescript se habrá puesto en segundo plano
@Tetsujin Parece que no hay forma de obtener la segunda aplicación más importante. Mismo problema aquí stackoverflow.com/questions/25411174/…
mi respuesta ya encuentra el segundo al frente, en virtud de que está al frente y luego se esconde. No existe una forma programática de interrogar a los servicios de lanzamiento para extraer esa información. Lo mejor que puedes hacer es por orden de lanzamiento. Si todo lo que necesita es presionar el botón Página abajo, ¿por qué no mirar las otras innumerables formas en que se puede lograr?
Pregunta de @Tetsujin aceptada apple.stackexchange.com/questions/173298/…

Respuestas (1)

Esto funcionará si se llama a la secuencia de comandos desde el Editor de secuencias de comandos, ya que "se quita 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 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 aquí la respuesta anterior para la posteridad.

Rejugué toda la respuesta 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 está. Obtengo "prueba" siempre que la aplicación esté abierta y no necesariamente si está activa o no.
un replanteamiento… respuesta editada
reescritura completa, ahora estoy de vuelta en mi escritorio - esto ahora hace exactamente lo que pediste.
Hmm.. Si agrego el applescript como una aplicación al muelle, solo muestra "test2" sin importar en qué aplicación me haya enfocado originalmente.
probablemente porque la aplicación Applescript está al frente. Pruebe agregando un retraso de 3 segundos, luego haga clic en el escritorio entre iniciar y activar [así es como lo probé aquí]
también puede reemplazar el segundo comando de diálogo con display dialog (activeApp)para confirmar exactamente lo que el script cree que es lo primero.
Tenga cuidado con esto: los nombres de aplicaciones de algunas aplicaciones (p. ej., tell application "app_name") difieren de los nombres de sus procesos (p. ej., set frontmost of process "app_process" to true).
Además, ¡tenga cuidado si tiene instaladas diferentes versiones de la misma aplicación (por ejemplo, Firefox)! Puede (probablemente) lanzar el incorrecto.
Todavía funciona en 2019 en Mojave