AppleScript: Lightroom 5: действие "AXShowMenu" на панели Smart Collection не отображает контекстное меню
Мы разрабатываем простой инструмент автоматизации с использованием Lightroom 5 (новейшей версии CC) с использованием Applescript.
Для некоторых действий нам нужно контекстное меню на панели "Умные коллекции", например, чтобы импортировать описания Smart Collection.
Согласно документации и различным источникам здесь, на stackru и в других местах, AXShowMenu должно вызвать это меню.
До сих пор я не смог сделать это контекстное меню всплывающим.
Используя UIElementInspector и UI Browser, я обнаружил элемент, к которому прикреплено действие AXShowMenu. На основе кода, предоставленного браузером пользовательского интерфейса, я получил следующий скрипт, который запускаю из редактора Applescript:
tell application "Adobe Photoshop Lightroom 5"
activate
tell application "System Events"
tell process "Lightroom"
set frontmost to true
perform action 1 of static text "Smart Collections" of group 1 of row 11 of outline 1 of scroll area 1 of window 6
delay 2
end tell
end tell
end tell
tell application "AppleScript Editor" to activate
Обратите внимание, что если вы попытаетесь воссоздать это, номер окна, а также номер строки могут отличаться. Кроме того, последняя строка - просто удобство, и не имеет отношения к коду.
В окне "Результаты" в редакторе AppleScript у меня есть следующее:
perform action 1 of static text "Smart Collections" of group 1 of row 11 of outline 1 of scroll area 1 of window 6 of process "Lightroom"
--> action "AXShowMenu" of static text "Smart Collections" of group 1 of row 11 of outline 1 of scroll area 1 of window 6 of application process "Adobe Photoshop Lightroom 5"
а это значит, что я вызвал действие.
Но... ничего не происходит.
Любое понимание, обходной путь и т. Д. Высоко ценится.
Заранее спасибо.
1 ответ
Я пробую ваш сценарий на Lightroom 4, те же результаты здесь.
Некоторое приложение нуждается в реальном клике.
Попробуй это
tell application "System Events"
tell process "Lightroom"
set frontmost to true
set {x, y} to position of text field 1 of row 11 of outline 1 of scroll area 1 of window 6
my realClick(x, y, "Right") -- "Right" = mouseRight, "Left" = mouseLeft
delay 0.5
key code 125 -- arrow down to select first menuitem
keystroke return -- to click on menuitem
end tell
end tell
on realClick(x, y, leftRight)
do shell script "/usr/bin/python -c 'import Quartz.CoreGraphics as qcg
def mouseEvent(type):
e=qcg.CGEventCreateMouseEvent(None, type, (" & x & "," & y & "), r)
qcg.CGEventPost(qcg.kCGHIDEventTap, e)
if \"" & leftRight & "\" is \"Left\": r= qcg.kCGMouseButtonLeft; mouseEvent(qcg.kCGEventLeftMouseDown); mouseEvent(qcg.kCGEventLeftMouseUp)
else: r= qcg.kCGMouseButtonRight; mouseEvent(qcg.kCGEventRightMouseDown); mouseEvent(qcg.kCGEventRightMouseUp)'"
end realClick