Applescript выполняет действие AXShowMenu - PullRequest
0 голосов
/ 12 ноября 2018

Я везде искал ответ, но ничего не могу найти по этому поводу. Когда я запускаю этот код, действие AXShowMenu выполняется правильно. Но скрипт продолжает работать несколько секунд и выдает ошибку:

"действие" AXShowMenu "кнопки меню текстового поля области прокрутки 3 группы сплиттеров 1 окна" Сообщения "процесса" Сообщения "не понимает сообщение" выполнить "."

Я что-то упускаю до боли? Как я могу заставить Applescript двигаться дальше после выполнения действия AXShowMenu?

tell application "System Events"
    tell process "Messages"
            perform action "AXShowMenu" of menu button of text field of scroll area 3 of splitter group 1 of window "Messages"
    end tell
end tell

AXShowMenu

Это ссылка на меню, к которому я пытаюсь получить доступ. Элемент может быть создан, если вы создаете новое сообщение и вводите некоторый текст в текстовое поле.

1 Ответ

0 голосов
/ 12 ноября 2018

Установив конечную цель, определите, работает ли номер, введенный в поле To: в приложении Сообщения , с помощью службы iMessage или службы SMS, вы можете попробовать использовать свойства * 1004. * и services объекты, чтобы определить, могут ли они использоваться для эффективного различения типов чисел.

Поскольку у меня нет iPhone, мне не хватает возможности SMS из моего приложения Сообщения . Однако при вводе некоторого случайного числа я заметил, что оно будет классифицировано приложением Messages на тип услуги, который, как я полагаю, будет наиболее подходящим для характера числа. :

use application "Messages"

service type of services of buddy "12343" = iMessage

Для меня это возвращает true, просто потому что iMessage является единственным активным типом службы, который работает в моем приложении Сообщения . Однако этот ответ соответствует тому, что отображается во всплывающем меню приложения.

Итак, предполагая логику, я надеюсь, что вы можете использовать эти две строки как есть, поменять число при необходимости и отработать значение, которое будет либо true, либо false ; или, возможно, сначала выясните, есть ли у вашего приложения Messages служба «по умолчанию», в которую оно будет классифицировать числа неопределенного характера. Я предполагаю, что предпочтение будет отдано «SMS», а не iMessage, учитывая возможность выбора обеих доступных служб, и в этом случае следующий сценарий может быть более подходящим:

use application "Messages"

name of service of buddy "12343" = "SMS"

NB: Возможно, что разные локали используют разные имена сервисов, и то, что AppleScript в британской системе называет service "SMS", может быть service "Text Message" в системе США или где бы вы ни находились .

Вы можете легко выполнить быструю начальную проверку имен каждого Сообщения service, запустив tell application "Messages" to get the name of every service. Список будет содержать 4 или 5 потенциальных сервисов, но будет понятно, что относится к обмену текстовыми сообщениями, и немного двусмысленно, но в конечном итоге очевидно, что относится к iMessaging.

...