0 votos

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

Actualmente uso este AppleScript para intentar poner el foco en la ventana más reciente de un PID, en 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 de maravilla porque no pide la aprobación de la accesibilidad. Sin embargo, las peculiaridades son:

  • Ignora las ventanas minimizadas, por lo que si todas las ventanas están minimizadas, no se enfoca nada
  • Si tiene ventanas en varios espacios, y la última ventana a la que accedió estaba 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.
  • Todavía no me he encontrado con ello, pero por lo visto la gente dice que si una ventana de otras aplicaciones está encima de la ventana, ésta no se pone encima.

Sé de perform action AXRaise Sin embargo, esto necesita la aprobación de la API de accesibilidad. Los usuarios de mi complemento están pidiendo que se elimine esto, ya que muchos de ellos tienen dificultades para permitir el acceso a la aplicación única, especialmente si no lo conceden en la primera ventana emergente.

Así que esto se hizo en applescript, si usted sabe cómo hacerlo en carbono (núcleo-fundación, núcleo-gráficos) o cacao puedo usar eso para.

En osx 10.9 el AXMakeProcessTrusted estaba obsoleto, de lo contrario podría haber usado eso para conceder el acceso a mi aplicación sin molestar a los usuarios y luego usar AXUIElementSetAttributeValue para llevar una ventana al frente.

Por favor, ayuda Gracias

1voto

Fuzzy Purple Monkey Puntos 702

Esto soluciona el primer inconveniente 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 ocurre con 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 desmineraliza una ventana. activate hace que la aplicación sea más frontal.

activate y el ajuste frontmost a true eleva todos los Windows pero open -a sólo levanta una ventana.

Pensé que

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

también podría funcionar, pero estoy recibiendo un fallo de seguridad al intentar lanzar una aplicación que ya se está ejecutando.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X