【问题标题】:Applescript: on clicking Menu Bar item via gui scriptApplescript:通过gui脚本单击菜单栏项
【发布时间】:2013-05-05 18:18:07
【问题描述】:

我正在尝试为名为 F.lux 的应用程序制作一个 AppleScript,该应用程序单击菜单项“禁用一小时”,如下面的屏幕截图所示:

元素路径如下图所示:

到目前为止,这是我的代码:

tell application "System Events"
    tell process "Flux"
        click (menu bar item 1 of menu bar 2)
        click menu item "Disable for an hour" of menu 1 of menu bar item 1 of        
        menu bar 2
    end tell    
end tell

一切编译正常,但是当我尝试运行脚本时,我不断收到以下错误消息:

错误“系统事件出现错误:无法获取进程 \"Flux\" 的菜单栏 2 的菜单栏项目 1 的菜单 1。无效的索引。”进程“Flux”的菜单栏 2 的菜单栏项目 1 的菜单 1 中的编号 -1719

有人能指出我在哪里出错了吗?

【问题讨论】:

  • 这不是标准菜单项。
  • @DanielA.White 您是否建议没有通过applescript 选择此特定选项的解决方案?
  • 相信您不能使用 GUI 脚本与不属于系统的额外菜单栏(第三方菜单栏,例如这个)。不要强迫我,但这是我的一般印象。您可能需要做一些进一步的研究。
  • 你有截图的 UI 浏览器屏幕阅读器是什么?
  • @thetallweeks 我相信这是来自pfiddlesoft.com/uibrowser的 UI 浏览器

标签: macos applescript


【解决方案1】:

这对我有用,但在第一次点击命令后有大约 5 秒的延迟。

tell application "System Events" to tell process "Flux"
    tell menu bar item 1 of menu bar 2
        click
        click menu item "Disable for an hour" of menu 1
    end tell
end tell

一种解决方法是使用ignoring application responses 并在单击命令后终止系统事件:

ignoring application responses
    tell application "System Events" to tell process "Flux"
        click menu bar item 1 of menu bar 2
    end tell
end ignoring
do shell script "killall System\\ Events"
delay 0.1
tell application "System Events" to tell process "Flux"
    tell menu bar item 1 of menu bar 2
        click menu item "Disable for an hour" of menu 1
    end tell
end tell

【讨论】:

  • 这非常有效。顺便说一句,我喜欢你的网站,似乎是一个感受 applescript 的好地方。我想 +1,但我需要更多代表。
  • 顺便说一句,有没有办法在脚本运行时隐藏 gui 操作?
  • @BlackMilk 不。您正在编写 GUI 脚本,因此您无法隐藏它。它需要被看到才能采取行动。
  • @BlackMilk 您可以通过提前通过do shell script "open -g applicationNamePath" 调用(甚至正在运行的)应用程序来隐藏 gui 操作,然后告诉系统事件该做什么。 GUI 必须对系统“可见”——而不是对用户。因此,如果应用程序在后台,它将停留在那里(“可读”),如果它重新打开,它将在最前面的应用程序后面打开。当然,任何菜单点击都是可见的,尽管以毫秒为单位。 (我偶尔会用这种方式进行一些“系统偏好设置”,非常快。)
  • 如果您在使用第二个脚本时遇到问题,请在 killall System\\ Events 之前添加 delay 0.1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2019-03-21
  • 2022-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多