1 votos

AppleScript, para establecer la posición de la ventana situada en primer plano, incluso si no AppleScriptable

Estoy tratando de escribir un guión para el centro de la ventana situada en primer plano de la aplicación activa, cuando yo seleccione este AppleScript de la secuencia de Comandos de menú en la barra de menú. Debería funcionar con cualquier aplicación, incluyendo la no-secuencias de comandos de aplicaciones.

Cuando ejecuto este desde el Editor de secuencias de Comandos, funciona bien. si yo seleccione la aplicación actual o de otra aplicación de la "a" menú de la aplicación en el Editor de secuencias de Comandos, se ve que el Editor de secuencias de Comandos es la primera aplicación, y se mueve en esa ventana, en consecuencia. (También he depurado asignando manualmente el nombre de otra aplicación a currentApplication, incluyendo un no-secuencias de comandos de la aplicación, y que también funciona bien.)

El problema parece ser que es cuando se ejecuta el script de la secuencia de Comandos elemento de menú. He depurado por mostrar una notificación con el texto de currentApplication, y cada vez que se muestra el nombre de la aplicación situada en primer plano, como se esperaba. Sin embargo, no se mueve de la posición de la ventana. ¿Por qué?

-- Get name of the current application and its front window
tell application "System Events"
    set activeApps to name of application processes whose frontmost is true
    set currentApplication to item 1 of activeApps
    -- DEBUG -- currentApplication seems to be the correct application
    -- display notification currentApplication
    -- activate currentApplication
    -- Get the front window and its measurements
    set frontWindow to the first window of application process currentApplication
    set windowSize to size of frontWindow
    set windowPosition to position of frontWindow
end tell

-- Get the bounds of the screen
tell application "Finder"
    set screenBounds to bounds of window of desktop
end tell

--calculate the center of the current window
set windowSizeX to item 1 of windowSize
set windowSizeY to item 2 of windowSize
set windowCenterX to windowSizeX / 2
set windowCenterY to windowSizeY / 2

-- calculate the center of the screen
set screenCenterX to (item 3 of screenBounds) / 2
set screenCenterY to (item 4 of screenBounds) / 2

--calculate the new window position
set newWindowPositionX to screenCenterX - windowCenterX
set newWindowPositionY to screenCenterY - windowCenterY

-- set the new window position
tell application "System Events"
    set position of frontWindow to {newWindowPositionX, newWindowPositionY}
end tell

3voto

Cachotas Puntos 41

La respuesta era permitir SystemUIServer.aplicación para el control de la computadora, en la Seguridad de la > Privacidad > Accesibilidad preferencias. Había tantas ventanas del Finder abierto, sólo puedo suponer que el diálogo de advertencia fue apareciendo detrás de ellos. Una vez que se concede el permiso, funciona bien.

Allow SystemUIServer

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