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