seleccione un elemento de menú de una ventana en lugar de un proceso utilizando Applescript

1

Soy bastante nuevo en Applecript (y soy un programador principiante) y he llegado a un callejón sin salida. Descubrí cómo acceder a un elemento del menú de un proceso, pero no sé cómo hacerlo una vez que tenga múltiples ventanas. ¡Gracias por la ayuda que me puedas brindar!

fondo: Estoy tratando de usar Applescript con Fiji Is Just ImageJ (FIJI) para procesar un par de cientos de archivos de imagen a la vez. Necesito usar el complemento "Plugins > Segmentation > Simple Neurite Tracer", pero no funciona bien con el lenguaje de macros nativo de FIJI, así que estoy probando el Applecript.

Lo que he intentado: Ya he configurado algo que recorrerá las imágenes una por una y almorzará el complemento, pero luego no puedo averiguar cómo acceder a los nuevos menús en las ventanas emergentes.

tell application "Fiji" to activate
delay 3
menu_click({"Fiji", "Image", "Type", "8-bit"})


-- 'menu_click', by Jacob Rus, September 2006
-- 
-- Accepts a list of form: '{"Finder", "View", "Arrange By", "Date"}'
-- Execute the specified menu item.  In this case, assuming the Finder 
-- is the active application, arranging the frontmost folder by date.

on menu_click(mList)
local appName, topMenu, r

-- Validate our input
if mList's length < 3 then error "Menu list is not long enough"

-- Set these variables for clarity and brevity later on
set {appName, topMenu} to (items 1 through 2 of mList)
set r to (items 3 through (mList's length) of mList)

-- This overly-long line calls the menu_recurse function with
-- two arguments: r, and a reference to the top-level menu
tell application "System Events" to my menu_click_recurse(r, ((process appName)'s ¬
    (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu)))
end menu_click

on menu_click_recurse(mList, parentObject)
local f, r

-- 'f' = first item, 'r' = rest of items
set f to item 1 of mList
if mList's length > 1 then set r to (items 2 through (mList's length) of mList)

-- either actually click the menu item, or recurse again
tell application "System Events"
    if mList's length is 1 then
        click parentObject's menu item f
    else
        my menu_click_recurse(r, (parentObject's (menu item f)'s (menu f)))
    end if
end tell
end menu_click_recurse

Utilicé el inspector de accesibilidad para intentar averiguar los nombres de las ventanas, así puedo usar el mismo proceso que hice para iniciar el complemento pero no pude comprenderlo. El nombre de la ventana en sí mismo es predecible, por lo que puedo tomar el nombre del archivo que abro y agregar "Rastreo para:" antes de él.

Estaba en otra página que era similar pero tampoco pude adaptarla, sin botón, pero aún haciendo clic en un elemento del menú en una ventana en lugar de un proceso: ¿Cómo hago clic en un botón con AppleScript?

activate application "Fiji"
tell application "System Events" to tell process "Fiji"
click menu item "Quit" of menu "File" of menu bar 1 of window 1
--click button "Quit" of window 1 of window 1
end tell

Luego intenté usar MouseTools pero no parece funcionar de manera consistente. El primer clic del mouse se registra perfectamente pero el segundo funciona a veces y otras no.

-- move the mouse to the x/y coordinates (as measured from the top-left part of the screen) and perform a mouse left-click
set mouseToolsPath to (path to home folder as text) & "MouseTools"
set x to 60
set y to 44

do shell script quoted form of POSIX path of mouseToolsPath & " -x " & (x as text) & " -y " & (y as text) & " -doubleLeftClick"


set x to 219
set y to 598

do shell script quoted form of POSIX path of mouseToolsPath & " -x " & (x as text) & " -y " & (y as text) & " -doubleLeftClick"
    
pregunta Sahir Moosvi 16.03.2015 - 09:26

1 respuesta

1

Debo decir que tu pregunta es bastante elaborada y requiere bastante lectura y pensamiento ...

Pero aquí hay una versión de tu último, pero una manzana, que simplemente PUEDE trabajar un poco mejor para ti:

activate application "Fiji"
tell application "System Events" to tell process "Fiji"
    click menu item "Quit" of menu of menu bar item "File" of menu bar 1
end tell

1) Lo que llamaste "buscador de menú" en realidad es el elemento de la barra de menú "Archivo"

2) Barras de menú con Apple (normalmente) no pertenecen a "window 1" (sino a aplicaciones). Tendría que obtener una ventana específica al frente para procesar solo esa.
Pero de todos modos, "Dejar de fumar" cerrará todas tus ventanas ...

    
respondido por el clemsam lang 21.12.2015 - 12:09

Lea otras preguntas en las etiquetas