【问题标题】:Accessing an Applescript from 2 different menus produces different results. Why?从 2 个不同的菜单访问 Applescript 会产生不同的结果。为什么?
【发布时间】:2015-04-20 16:16:33
【问题描述】:

我有一个应用程序,它具有用于运行 Applescripts 的嵌入式脚本菜单。但是,如果您尝试运行具有某些功能(主要与 UI 相关)的脚本,除非您从系统脚本菜单(在菜单栏中)运行它们,否则它们将无法运行。

例如,如果在应用程序中你说:

tell application "System Events" to tell application process "theApp" to get all windows

如果从程序的脚本菜单运行,它将返回一个空列表,但如果从系统脚本菜单运行,它将返回 2。我也试过:

tell application "System Events"
    tell application process "theApp" 
        set allElements to UI elements
        display dialog (count of allElements)
    end tell
end tell
-- returns 2 when run from System script menu but 0 when run from within theApp.

此外,如果您从脚本编辑器运行,它也可以正常工作。在系统偏好设置中为应用程序启用了 GUI 脚本,所以我很好奇为什么会发生这种情况,以及它的任何解决方法(除了从系统脚本菜单运行脚本)?字典显示标准套件,因此它应该可以访问 windows...

有什么想法吗?

【问题讨论】:

  • 一个问题可能与“theApp”的脚本菜单实现有关。既然你没有透露 theApp 是什么,我假设它是你写的?当您从每个不同的位置启动时,该域是不同的,因此 UI 信息天生就会不同。尝试添加:告诉应用“theApp”激活行。

标签: user-interface scripting applescript osx-yosemite


【解决方案1】:

我相信您尚未将相关应用配置为使用辅助设备。

您真的应该打开系统偏好设置,然后单击“安全”按钮,然后解锁,然后单击辅助设备按钮(带有白人的蓝色图标),然后将您的应用拖到上面(显示您的应用从它的 Dock 菜单),并允许它控制您的机器,记得在之后锁定窗格。

我不能保证这会奏效,但绝对值得一试。

【讨论】:

  • 这就是我所说的“启用了 GUI 脚本...”我只是没有澄清。事实上,我已将其关闭,然后再次打开应用程序只是为了重置它......仍然无法正常工作。
  • 我宁愿用那个解决应用程序的供应商,因为如果您添加或删除脚本菜单的元素,那么这不应该被视为对应用程序所做的任何更改,即至少我是这么理解的。因为如果您“启用 gui 脚本”,那么它应该可以工作,直到您更改应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2021-11-10
  • 2020-01-28
  • 2017-02-21
相关资源
最近更新 更多