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
Другие вопросы по тегам