Enfocar la ventana más reciente de pid sin requerir aprobación de accesibilidad

0

Actualmente utilizo este AppleScript para intentar enfocar la ventana más reciente de un PID, por ejemplo, aquí mi pid es 450 .

tell application "System Events"
  set frontmost of the first process whose unix id is 450 to true
end tell

Esto funciona maravillosamente ya que no solicita la aprobación de accesibilidad. Las peculiaridades son:

  • Ignora las ventanas minimizadas, por lo tanto, si se minimizan todas las ventanas, no se enfoca nada
  • Si tiene ventanas en varios espacios y la última ventana a la que se accedió fue en el espacio X. Si está en el espacio Y y tiene ventanas de esa aplicación en el espacio Y, se enfocará la más reciente utilizada en el espacio Y.
  • No lo he encontrado todavía, pero aparentemente la gente dice que si una ventana de otras aplicaciones está en la parte superior de la ventana, no llegará a la cima.

Sé de perform action AXRaise , sin embargo, esto necesita aprobación api de accesibilidad. Mis usuarios de mi complemento piden que se elimine esto, ya que muchos de ellos tienen dificultades para permitir el acceso a la aplicación única, especialmente si no se lo concede en la primera ventana emergente.

Así que esto se hizo en Applecript, si sabes cómo hacerlo en carbono (base de núcleo, gráficos de núcleo) o cacao, puedo usarlo para.

En osx 10.9, AXMakeProcessTrusted estaba en desuso. De lo contrario, podría haber usado eso para otorgar acceso a mi aplicación sin molestar a los usuarios y luego usar AXUIElementSetAttributeValue para traer una ventana al frente.

Por favor ayuda Gracias

    
pregunta Noitidart 18.10.2014 - 07:19

1 respuesta

1

Esto corrige el primer capricho pero no el segundo:

tell application "System Events"
    bundle identifier of process 1 whose id is 1234
end tell
tell application id result
    reopen
    activate
end tell

Lo mismo se aplica a open :

open -a "$(ps -p 1234 -o comm=)"

Si no hay ventanas abiertas, reopen abre una nueva ventana por defecto, y si todas las ventanas están minimizadas, reopen desarma una ventana. activate hace que la aplicación sea la más avanzada.

activate y la configuración de frontmost en verdadero aumenta todas las ventanas, pero open -a solo abre una ventana.

Pensé

lsappinfo launch ASN="$(lsappinfo find pid=1234)"

también podría funcionar, pero obtengo un error de seguridad al intentar iniciar una aplicación que ya se está ejecutando.

    
respondido por el user495470 19.10.2014 - 08:15

Lea otras preguntas en las etiquetas