AppleScript UI脚本编写通常非常慢,还是我的脚本,或者其他什么?

AppleScript UI脚本编写通常非常慢,还是我的脚本,或者其他什么?,applescript,Applescript,我对AppleScript还不熟悉,我正在潜心研究UI脚本。我正在尝试为程序TypeIt4Me创建一个脚本,它是一个菜单栏实用程序(文本扩展),不支持AppleScript 我建议的脚本将利用系统事件单击其菜单栏图标,键入五次,右键一次,然后返回。但是,在单击图标和执行第一次击键之间,AppleScript会暂停很长时间,这对于脚本来说是不切实际的。下面是第一次单击并按下一次的版本 tell application "System Events" click menu bar item 1 o

我对AppleScript还不熟悉,我正在潜心研究UI脚本。我正在尝试为程序TypeIt4Me创建一个脚本,它是一个菜单栏实用程序(文本扩展),不支持AppleScript

我建议的脚本将利用系统事件单击其菜单栏图标,键入五次,右键一次,然后返回。但是,在单击图标和执行第一次击键之间,AppleScript会暂停很长时间,这对于脚本来说是不切实际的。下面是第一次单击并按下一次的版本

tell application "System Events"

click menu bar item 1 of menu bar 2 of application process "TypeIt4Me"
key code 125 -- ie "down"

end tell

这可能是我的代码有问题吗?什么地方的背景?一般来说,是AppleScript吗?谢谢。

您单击什么图标?你是说双击吗?也许你的意思是“开始剧本”?
如果您的意思是脚本实际开始运行需要很长时间,那么这是AppleScript的典型情况,而不是由脚本引起的。如果TypeIt4Me可以运行应用程序而不是脚本,或者如果可以将脚本编译并作为应用程序运行,那么您应该能够将其速度提高一点。它仍然需要一些时间来启动,但不需要先编译脚本。

您的脚本也需要大约5秒钟才能为我运行。然而,这样的延迟并不常见

这使得脚本在大约0.05秒后返回,但我不知道如何在它之后毫不延迟地运行键代码命令

ignoring application responses
    tell application "System Events" to tell process "TypeIt4Me"
        click menu bar item 1 of menu bar 2
    end tell
end ignoring
这也不起作用:

with timeout of 0.2 seconds
    try
        tell application "System Events" to tell process "TypeIt4Me"
            click menu bar item 1 of menu bar 2
        end tell
    end try
end timeout
tell application "System Events"
    key code 125
end tell
但是,在命令之间终止系统事件确实有效:

ignoring application responses
    tell application "System Events" to tell process "TypeIt4Me"
        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"
    key code 125
end tell

让我想起了这一点:基本上是的,GUI脚本通常在点击
后会有很大的延迟。我面临着同样的问题,在点击蓝牙“点击”后,在点击下一个菜单项之前会有5秒的延迟。有没有办法避免这种延误。下面给出的代码告诉应用程序“系统事件”告诉进程“SystemUIServer”将bt设置为菜单栏1的(第一个菜单栏项,其描述为“蓝牙”),单击bt菜单的bt告诉(第一个菜单项,其标题为“SBH80”),如果存在菜单项“断开连接”,则单击菜单项“断开连接”否则,如果end tell end tell
能够通过在“忽略应用程序响应”块中包含“单击bt”命令来修复,请单击菜单项“连接”end。它现在工作得很好,毫不拖延。因此,仅导致UI延迟的命令应包含在ignore块中。非常感谢您为我们指明方向。我们已在此帖子中发布了详细答案-->