【问题标题】:Applescript perform action AXShowMenuApplescript 执行操作 AXShowMenu
【发布时间】:2023-03-23 20:48:01
【问题描述】:

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

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

我在这里遗漏了一些非常明显的东西吗?如何让 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 的滚动区域 3 的文本字段 1 的菜单按钮 1 执行操作 1”,但由于某种原因,这需要 5 秒以上的时间才能执行。
  • 您是否要访问显示在该弹出菜单中的菜单项以创建新联系人...?如果是这样的话,如果您从主菜单栏访问菜单项会更容易吗,这样就不需要通过弹出菜单了?
  • 我实际上是在尝试通过引用第一个菜单项的值来确定数字是消息还是文本消息,在这种情况下恰好是“文本消息”。不幸的是,由于某种原因,我得到的长时间延迟大大减慢了脚本的速度。
  • 从表面上看,您是否尝试将索引添加到链的最后两个元素:即perform action "AXShowMenu" of menu button 1 of text field 1 of...。我很惊讶您的代码完全有效(显然 AppleScript 有时可以通过上下文找出索引),但最好是具体的。

标签: applescript imessage uiaccessibility


【解决方案1】:

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

由于我没有 iPhone,我的 Messages 应用程序缺少 SMS 功能。但是,当我输入一些随机数时,我观察到它会被 Messages 应用程序归类为我认为最适合其性质的服务类型。号码:

use application "Messages"

service type of services of buddy "12343" = iMessage

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

因此,假设逻辑如下,我希望您可以按原样使用这两行,根据需要换出数字,并计算出truefalse 的值;或者可能首先确定您的 Messages 应用程序是否具有“默认”服务,它将对不确定性质的数量进行分类。我的猜测是,考虑到两种可用的服务可供选择,它会支持“SMS”而不是 iMessage,在这种情况下,以下脚本可能更合适:

use application "Messages"

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

注意:不同的语言环境可能使用不同的服务名称,英国系统上的 AppleScript 所指的 service "SMS" 在美国系统上可能是 service "Text Message",或者无论您在哪里位于。

您可以通过运行tell application "Messages" to get the name of every service 轻松地对每个消息 service 的名称执行快速初始检查。该列表将包含 4 或 5 种潜在服务,但很明显哪些适用于短信,有些模糊但最终很明显适用于 iMessaging。

【讨论】:

  • 好主意!尽管这仍然给我带来了问题。无论输入哪个好友文本,声明 = iMessage 都是正确的。即使好友服务实际上是短信。
  • 那么不要使用service type,而是根据我的第二个代码sn-p使用name of service?告诉我结果如何。
  • 该方法适用于在您的聊天记录中建立的好友,但每当添加新收件人时,它似乎会将两个好友添加到好友列表中。一种使用 SMS,另一种使用 iMessage 服务。所以我永远无法判断哪个是正确的。我通过使用以下方法发现了这一点:告诉应用程序“消息”以获取好友的每个服务的名称。那里列出了 2 个同名和不同服务的好友。
  • 很抱歉没有按计划进行。你所描述的对我来说就像一个错误。我想你可以向 Apple 报告,但我怀疑他们会在意。
最近更新 更多