Applescript执行动作AXShowMenu

时间:2018-11-12 16:23:17

标签: applescript imessage uiaccessibility

我到处都在寻找答案,但找不到任何答案。当我运行此代码时,动作AXShowMenu将正确执行。但是脚本继续运行了几秒钟并抛出错误:

“进程“消息”的窗口“消息”的拆分器组1滚动区3的滚动区域3的文本字段的菜单按钮的动作“ AXShowMenu”不理解“执行”消息。”

我在这里错过了明显痛苦的东西吗?在执行AXShowMenu操作之后,如何让Applescript继续前进?

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 :(得分:0)

确定最终目标是确定在 Messages 应用程序的To:字段中输入的数字是在iMessage服务还是SMS服务下运行,您可以尝试使用buddiesservices对象,以确定它们是否可用于有效地区分数字类型。

由于我没有iPhone,因此我的 Messages 应用程序缺少短信功能。但是,当我输入一些随机数时,我发现, Messages 应用会将其归类为我认为最适合其本质的服务类型号码:

use application "Messages"

service type of services of buddy "12343" = iMessage

对我来说,这返回true,仅因为iMessage是在 Messages 应用程序中运行的唯一活动服务类型。但是,此响应与应用程序弹出菜单中显示的内容一致。

因此,假设逻辑遵循,我希望您可以按原样使用这两行,根据需要交换出数字,并计算出true或{ {1}};或者,也许首先要弄清您的 Messages 应用程序是否具有“默认”服务,该服务会将不明确的性质分类。我的猜测是,如果有两种可用服务可供选择,它将更倾向于“ SMS”而不是iMessage,在这种情况下,以下脚本可能更合适:

false

注意::不同的语言环境可能使用不同的服务名称,英国系统上的AppleScript所指的use application "Messages" name of service of buddy "12343" = "SMS" 在美国系统上可能是service "SMS",或者无论您身在何处。

通过运行service "Text Message",您可以轻松地对每个消息 service的名称进行快速的初始检查。该列表将包含4或5个潜在的服务,但是很明显哪个适用于文本消息传递,并且有点模糊,但最终很明显哪个适用于iMessaging。