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