【发布时间】:2014-01-21 22:20:19
【问题描述】:
我将 NetShade 用作代理服务,并认为我可以尝试自动在不同代理之间切换,作为我的第一个 AppleScript 脚本的良好开端。
NetShade 应用不支持 AppleScript,所以我必须使用 UI 脚本。经过几次尝试(以及此处的一些帖子)后,我设法拥有了一个脚本,该脚本通过菜单栏项切换代理(这是其中的picture,因为由于声誉限制,我无法将其内联发布)。
不幸的是,我的代码非常慢(≈6 秒),这使得它作为脚本有点不切实际。第一个菜单会立即打开,但子菜单和代理服务器的选择需要几秒钟的时间。
我正在使用以下代码:
set theProxy to "Netshade US 4"
tell application "System Events" to tell process "NetShade"
tell menu bar item 1 of menu bar 2
click
tell menu item "NetShade Proxy" of menu 1
click
tell menu item theProxy of menu 1
click
end tell
end tell
end tell
end tell
我已经尝试添加 ignoring application responses,就像在另一个线程 (link) 中建议的那样,但这没有帮助。
最后我的问题是: 有没有办法加快这个过程?也许甚至可以在后台执行所有这些操作,而不显示菜单项?
P.S.:我运行的是 OS X 10.9.1
【问题讨论】:
-
NetShade 应用程序是否有任何控制台版本...或通过某种方式从终端访问其命令?
-
@summea 遗憾的是没有!它只有菜单栏项和常规窗口...
-
如果没有类似的东西,也没有 AppleScript 支持,它可能会暂时离开你当前的 UI 脚本选项(或类似的东西......)......除非,正如你提到的,有一种在后台模拟 GUI 事件的方法(这很酷;我还没有在 Mac OS X 中看到过那种东西……:)
-
@summea 还是谢谢!有其他人知道我当前脚本的调整或其他什么可以加快它的速度吗?
-
您是否需要连续点击,即只有在您第一次点击祖先菜单时才会填充目标菜单?如果没有,您可以尝试仅使用单击。大型菜单结构通常会导致缓慢的 GUI 脚本编写——是这种情况吗?也许有另一种编写脚本的方法,例如通过菜单栏的额外图标(或者您当前的代码就是这样做的?)。
标签: applescript