问题描述
我在 Automator 中设置了 Applescript 快速操作以离开缩放会议。无论什么应用程序在最前面,我都想检查一下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 将始终工作。
我必须为每个可能的应用程序执行此操作。有没有办法在不通过 Big Sur 中的这些安全内容的情况下在那里敲击键盘?我不介意将变焦放在首位。
解决方法
将全局键盘快捷键与Automator 工作流一起使用时存在问题,并保存为服务/快速操作 em>.
- 分配给服务/快速操作的键盘快捷键不需要与任何应用程序的默认键盘快捷键冲突 在按下时最前面,否则可能会出现不需要的行为。
- 当键盘快捷键在服务/快速操作上按下时最前面的每个应用使用运行 AppleScript 操作 中的强>UI 脚本 需要为其授予访问权限(正如您已经发现的这就是问题)。
要解决可访问性权限问题,可以使用以下三种方法来实现我想到的目标。
-
第一个,也是我使用键盘快捷键运行AppleScript脚本的首选方法,是使用第三个-party 应用程序 名为 FastScripts,因为它不需要让每个最前面的应用程序,还没有被授予特权,被授予访问权限以运行您的问题中显示的AppleScript代码。我想其他类似类型的第三方应用程序允许分配键盘快捷键和运行脚本也会绕过这个问题,但只有测试了上述内容。
-
第二种方法,可以通过 Automator 作为服务/快速操作使用运行 Shell 脚本来完成操作,然后分配一个键盘快捷键,无需为最前面的应用程序授予访问权限即可工作 当键盘快捷键被按下时。
-
第三种方法,可以通过 Automator 作为服务/快速操作使用运行 AppleScript 操作来完成 如果在 zoom.us > Preferences… > General 下更改 zoom.us 默认首选项取消选中[]在我离开会议时要求我确认,然后在分配键盘快捷键时,无需授予访问权限即可工作按下键盘快捷键时位于最前面的应用程序。
所有测试均在 macOS Big Sur 下使用 zoom.us(版本:5.4.7 (59780.1220))和我的语言和地区完成使用提供的各种方法将系统偏好设置中的strong>设置设为美国英语。
方法一
第一种方法使用以下示例 AppleScript 代码,如下所示,FastScripts 带有 键盘快捷键 ⌃⌥⌘W 按编码分配并为我工作。
在系统偏好设置 > 安全和隐私 > 隐私 > 辅助功能中,我添加并检查了以下内容:
- FastScripts
- 系统事件
然后在 zoom.us 运行和其他几个应用程序最前面当键盘快捷键被按下我不必为那些其他应用程序授予访问权限,zoom.us被带到前面并关闭。
示例 AppleScript 代码:
if application "zoom.us" is running then
tell application "zoom.us" to activate
delay 0.5
tell application "System Events" to ¬
tell application process "zoom.us"
keystroke "w" using command down
delay 0.5
key code 36
end tell
end if
-
注意出于测试目的,在测试方法 1 后,我退出了 FastScripts,因为它会被相同的键盘快捷键触发 这是在测试接下来的两种方法时分配的。
-
FastScripts 可以作为免费应用程序运行,最多 10 个键盘快捷键,或者升级 24.95 美元以解锁无限的键盘快捷键。我与 Red Sweater Software,LLC 没有任何从属关系,但我是 FastScripts 的用户。
方法二
使用 Automator 和 服务/快速操作 测试第二种方法,并设置工作流在 [任何应用程序] 中接收 [无输入]使用具有默认设置的运行 Shell 脚本 操作,以及以下示例 shell 脚本 代码 是所有使用的:
[[ -z $(pgrep -x 'zoom.us') ]] || pkill −x 'zoom.us'
在系统偏好设置 > 键盘 > 快捷方式 > 服务我为它指定了键盘快捷方式: ⌃⌥⌘W
然后在 zoom.us 运行和其他几个应用程序最前面当键盘快捷键被按下我不必向那些其他应用程序授予访问权限,zoom.us 已关闭。
方法三
使用Automator 和服务/快速操作测试第三种方法,并设置工作流在[任何应用程序]中接收[无输入]使用运行 AppleScript 操作 替换其默认的代码,仅使用以下示例 AppleScript 代码:
tell application "zoom.us" to quit
在系统偏好设置 > 键盘 > 快捷方式 > 服务我为它指定了键盘快捷方式 ⌃⌥⌘W 将其从 方法 2 中创建的 服务/快速操作 中删除后。
然后在 zoom.us 运行和其他几个应用程序最前面当键盘快捷键被按下我不必授予那些其他应用程序访问权限,zoom.us 已关闭。
这当然有效,因为在 zoom.us 的首选项中未选中 [] 在我离开会议时要求我确认 首选项。
总结一下,如果您不介意更改 zoom.us 中提到的默认首选项,那么方法 3 可能是解决您问题的最简单和最好的方法,因为它允许通过方法 2 正常退出,不需要任何第三方应用,并且不需要授予任何访问权限或zoom.us 最前面,它只是有效。
我首先提到了其他方法,因为方法一解决了Automator 和服务/快速操作的UI 脚本问题,以及方法二使用 zoom.us 中的默认设置。