AppleScript为什么总是用Command命令发送击键?

And*_*dge 4 applescript

我看到很多AppleScript的例子都是这样的

tell application "TextEdit"
    activate
    tell application "System Events"
        keystroke "s"
    end tell
end tell
Run Code Online (Sandbox Code Playgroud)

预期的结果是字母"s"将被输入到TextEdit中的活动文档中(假设至少有一个文档窗口).但它总是试图保存文档(为更改的文档做了它,如果它是新的则打开保存对话框).任何时候任何应用程序中的任何键都会发生同样的事情......

有没有人知道为什么系统事件总是发送"...使用{command down}"这样的击键?

And*_*dge 8

我使用Cmd + R从AppleScript编辑器运行脚本,而不是单击"运行"按钮.在我按下"R"键之后脚本立即开始执行,并且该脚本在我释放Cmd或R之前发送击键"S".这就是为什么发送按键"S"由TextEdit解释为修饰符Cmd.

解决方法是单击按钮运行或在脚本开头添加延迟并使用Cmd + R:

delay 0.2 -- 0.2 second delay is enough

tell application "TextEdit"
    activate
Run Code Online (Sandbox Code Playgroud)