seleziona una voce di menu di una finestra invece di un processo usando Applescript

1

Sono abbastanza nuovo per applecript (e un programmatore per principianti) e ho raggiunto un punto morto. Ho capito come accedere a una voce di menu di un processo ma non so come farlo una volta che ho più finestre. Grazie per qualsiasi aiuto tu possa dare!

sfondo: Sto cercando di usare Applescript con Fiji Is Just ImageJ (FIJI) per elaborare un paio di centinaia di file di immagine alla volta. Ho bisogno di usare il plug-in "Plugins > Segmentation > Simple Neurite Tracer" ma non funziona bene con il linguaggio macro nativo di FIJI, quindi sto provando il applescript.

Quello che ho provato: Ho già impostato qualcosa che scorre le immagini una ad una e pranza il plugin, ma dopo non riesco a capire come accedere ai nuovi menu sulle finestre che appaiono.

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

Ho usato l'ispettore di accessibilità per cercare di capire i nomi delle finestre in modo da poter usare lo stesso processo che ho fatto per avviare il plugin ma non sono stato in grado di comprenderlo. Il nome della finestra è prevedibile, quindi posso prendere il nome del file che apro e aggiungere "Tracing for:" prima di esso.

Ero in un'altra pagina che era simile ma non potevo adattarlo neanche tristemente - nessun pulsante, ma ancora facendo clic su una voce di menu in una finestra invece di un processo: Come faccio a fare clic su un pulsante utilizzando 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

Ho quindi provato a usare MouseTools ma non sembra funzionare in modo coerente. Il primo clic del mouse si registra perfettamente ma il secondo funziona a volte e talvolta 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"
    
posta Sahir Moosvi 16.03.2015 - 09:26
fonte

1 risposta

1

Devo dire che la tua domanda è piuttosto elaborata e richiede un po 'di lettura e di riflessione ...

Ma ecco una versione del tuo ultimo ma un applescript che solo MIGHT funziona un po 'meglio per te:

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) Quello che hai chiamato "menu finder" è in realtà elemento della barra dei menu "File"

2) Le barre dei menu con Apple (normalmente) non appartengono a "window 1" (ma alle applicazioni). Dovresti ottenere una finestra specifica in primo piano per elaborare solo quella.
Ma in ogni caso, "Chiusura" chiuderà tutte le finestre ...

    
risposta data 21.12.2015 - 12:09
fonte

Leggi altre domande sui tag