在任何应用程序中通过Automator在Applescript中发送击键

在任何应用程序中通过Automator在Applescript中发送击键,applescript,macos-big-sur,Applescript,Macos Big Sur,我在Automator中设置了Applescript quick action以离开缩放会议。无论什么应用程序处于最前沿,我都想检查zoom是否正在运行,如果正在运行,请离开会议 set appName to "Zoom.us" if application appName is running then tell application id (id of application appName) activate end tell

我在Automator中设置了Applescript quick action以离开缩放会议。无论什么应用程序处于最前沿,我都想检查zoom是否正在运行,如果正在运行,请离开会议

set appName to "Zoom.us"

if application appName is running then
    tell application id (id of application appName)
        activate
    end tell
    tell application "System Events"
        keystroke "w" using command down
        keystroke tab
        keystroke return
    end tell
end if
它起作用了!问题是,如果我正在参加zoom会议,而另一个应用程序处于最前沿,我必须从系统首选项获得该应用程序访问系统首选项的权限。如果我使用Chrome,我必须允许Chrome发送击键。然后,Chrome将始终工作


我必须为每一个可能的应用程序这样做。在大苏尔,有没有一种方法可以在不通过这些安全措施的情况下输入键盘?我不介意将zoom放在最前面。

将全局键盘快捷键与Automator工作流保存为服务/快速操作时,会出现一些问题

  • 为服务/快速操作指定的键盘快捷键不需要与按下时位于最前面的应用程序的默认键盘快捷键冲突,否则可能会出现不需要的行为
  • 运行AppleScript操作中,使用UI脚本在服务/快速操作上按下键盘快捷键时,位于最前面的每个应用程序都需要为其授予访问权限(您已经发现了这一点,因此提出了这个问题)
为了解决可访问性特权问题,这里有三种方法来实现我们想到的目标

  • 第一种,我喜欢使用键盘快捷键运行AppleScript脚本的方法是使用名为的第三方应用程序,因为它不需要拥有所有最前端、尚未授予特权的应用程序,被授予运行问题中显示的AppleScript代码的访问权限。我想象其他类似类型的第三方应用程序,允许分配键盘快捷键和运行脚本,也会绕过这个问题,但只测试了上述内容

  • 第二种方法,可以使用Automator作为服务/快速操作,使用运行Shell脚本操作,然后分配一个键盘快捷键,并且在按下键盘快捷键时不必向最前面的应用程序授予访问权限

  • 第三种方法是,如果在zoom.us首选项下更改zoom.us默认首选项,则可以使用Automator作为服务/快速操作,使用运行AppleScript操作,取消选中常规请让我确认何时离开会议,然后在分配键盘快捷键时确认是否可以工作,而无需在按下键盘快捷键时为最前面的应用程序授予访问权限

所有测试均在macOS Big Sur下进行,使用zoom.us(版本:5.4.7(59780.1220)),使用所提供的各种方法,将系统首选项中的语言和地区设置设置为美国英语


方法1

第一种方法使用以下示例AppleScript代码,如下所示,并使用键盘快捷键FastScripts⌃⌥⌘W
按编码分配并为我工作

在系统首选项中,我添加并检查了以下内容:

  • 快速脚本
  • 系统事件
然后,随着zoom.us的运行和其他几个应用程序的运行,当按下键盘快捷键时,这些应用程序位于最前面,我不必向这些其他应用程序授予访问权限,zoom.us被带到最前面并关闭

示例AppleScript代码:

如果应用程序“zoom.us”正在运行,则
告诉应用程序“zoom.us”激活
延迟0.5
将应用程序“系统事件”告知
告诉应用程序流程“zoom.us”
使用“向下”命令击键“w”
延迟0.5
密码36
结束语
如果结束
  • 注意:出于测试目的,在测试方法1后,我退出了FastScripts,因为它会被测试下两种方法时指定的相同键盘快捷键触发

  • FastScripts可以作为免费应用程序运行,最多可以运行10个键盘快捷键,或者升级为24.95美元,以解锁无限的键盘快捷键。我与Red Sweeter Software,LLC没有任何关联,只是作为FastScripts的用户


方法2

第二种方法是使用自动机测试的,设置为的服务/快速操作工作流使用运行Shell脚本操作及其默认设置在[任何应用程序]中接收[无输入],下面的示例Shell脚本代码就是所使用的全部代码:

[-z$(pgrep-x'zoom.us')]|pkill−x'zoom.us'
系统首选项键盘快捷键服务中,我为其分配了键盘快捷键:⌃⌥⌘W

然后,随着zoom.us的运行和其他几个应用程序的运行,当按下键盘快捷键时,这些应用程序位于最前面,我不必向这些其他应用程序授予访问权限,zoom.us被关闭


方法3

第三种方法使用自动机和