виберіть елемент меню вікна замість процесу за допомогою Applescript


1

Я зовсім новачок для applescript (і програміст-початківець), і я потрапив у глухий кут. Я зрозумів, як отримати доступ до пункту меню процесу, але я не знаю, як це зробити кілька вікон. Дякуємо за будь-яку допомогу!

фон: Я намагаюся використовувати Applescript з Fiji Is Just ImageJ (FIJI) для обробки декількох сотень файлів зображень одночасно. Мені потрібно використовувати плагін "Плагіни & gt; Сегментація & gt; Простий Neurite Tracer", але він не працює добре з рідною мовою макросу FIJI, тому я намагаюся використати applescript.

Що я спробував: Я вже створив щось, що буде прокручувати зображення один за одним і обід плагін, але після цього я не можу зрозуміти, як отримати доступ до нових меню на вікнах, які з'являються.

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

Я використовував інспектора доступності, щоб спробувати з'ясувати імена вікон, щоб я міг використовувати той самий процес, який я зробив для запуску плагіна, але я не зміг його зрозуміти. Ім'я самого вікна є передбачуваним, тому я можу взяти ім'я файлу, який я відкриваю, і до нього додати "Tracing for:".

enter image description here

enter image description here Я був на іншій сторінці, яка була схожа, але я не міг адаптувати її ні на жаль - жодна кнопка, але все ще клацаючи пункт меню у вікні замість процесу: Як натиснути кнопку за допомогою 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

Потім я спробував використовувати MouseTools, але він, здається, не працює послідовно. Перше клацання миші реєструє ідеально, але друге працює іноді, а іноді й не.

-- 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"

Відповіді:


1

Треба сказати, що ваше питання досить детально розроблене і потребує чималого читання і мислення ...

Але ось версія вашої останньої, але однієї яблука, що просто МОЖЛИВО працювати трохи краще для вас:

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) Те, що ви називаєте "меню пошуку" насправді пункт меню "Файл"

2) Панелі меню з Apple (зазвичай) не належать до "вікна 1" (але до додатків). Ви повинні отримати певне вікно на фронт, щоб обробити саме це.
Але все одно, "Вихід" закриє всі ваші вікна ...


Дякуємо за вашу увагу! Мені довелося в кінцевому підсумку за допомогою ключових ударів, який був зовсім трохи інтенсивніше для комп'ютера, але принаймні працював на мою тезу. Я спробую це і сподіваюся подарувати сюрприз для моєї старої лабораторії!
Sahir Moosvi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.