0

我第一次尝试使用 Applescript,并且正在尝试构建一个脚本来设置我在工作中开发的应用程序的默认布局。这涉及将应用程序放置在多个任务控制空间中。我手头的问题只是在空间中移动。我在许多与此类似的帖子中发现,可以通过以下方式实现此类操作

tell application "System Events"
    tell process "Finder"
        keystroke "1" using control down
    end tell
end tell

如果适当的键绑定到位。我更改了首选项,因此我可以使用 control+1 移动到第一个 MC 空间。但是,运行脚本不会做任何事情。这是事件日志输出:

tell application "System Events"
    keystroke "1" using control down
end tell

我看不到任何错误,但又一次:Applescript 的新手。我已经尝试了这个命令的许多变体,包括control down用花括号括起来并将调用包装到这样"System Events"的调用中"Finder"

tell application "Finder"
    tell application "System Events"
        keystroke "1" using control down
    end tell
end tell

但输出完全一样,没有变化。我想我在这里遗漏了一些东西......

根据这个问题的回答,我尝试添加延迟以确保我在运行脚本时不会踩到自己的脚,CMD-r但没有任何反应。当您尝试从重要的焦点窗口中单击时,我会听到声音效果(如果有任何意义的话),那是一声短促的哔哔声。我是否与应用程序交谈不当?

编辑

好的,我有一些工作,但我有点困惑为什么会这样。

tell application "Finder"
    activate
    delay 0.2
    tell application "System Events" to keystroke "a" using control down
end tell

这完成了我所需要的,但我必须将键绑定更改为字母。当 Applescript Editor 处于活动状态时,我可以通过按 control+1 来复制错误音调。我想AE有一个使用组合键的快捷方式。但是为什么在 Finder 应该处于活动状态时运行呢?

4

4 回答 4

1

我一直在处理这个问题——我不想在触发应该是全局快捷方式之前激活 finder。击键不起作用,但是我尝试了键代码并且确实有效:

on run {}
    tell application "System Events"
        key code {18} using {command down}
    end tell
    return "success"
end run

这个问题有一个关键代码列表:https ://apple.stackexchange.com/questions/36943/how-do-i-automate-a-key-press-in-applescript

于 2013-10-29T14:04:39.930 回答
1

要回答您的问题,在您的工作代码中,不同之处在于您在发出击键命令之前激活 Finder。击键命令始终发送到最前面的应用程序,因此您必须始终确保首先激活应用程序。

如果 control-1 不起作用,那么我怀疑某些 Finder 命令使用该组合,或者某些其他应用程序在全局上下文中使用该组合,这意味着无论哪个应用程序在最前面,它都会拦截该命令。否则它应该适合你。

最后,我将从 Finder 告诉代码块中删除您的系统事件代码行。没有理由告诉 Finder 告诉系统事件执行命令。只需将该行放在“结束说明”行之后即可。

祝你好运。

于 2013-08-10T20:32:20.547 回答
0

我发现这个工具是一个没有这个问题的好选择。

安装很简单:

brew install socsieng/tap/sendkeys

用法:

sendkeys send --initial-delay 0 --delay 0.001 --characters 'Hello'

https://github.com/socsieng/sendkeys

于 2021-08-02T02:37:50.000 回答
0

这应该有效:

告诉应用程序“Finder”
激活
结束告诉
延迟0.2
告诉应用程序“系统事件”
键代码18使用{control down}
结束告诉

于 2017-11-14T04:37:48.907 回答