如何用AppleScript的whose关键字获取所有运行中的应用程序?
AppleScript中whose关键字的正确用法(针对获取运行中应用场景)
我懂你纠结whose关键字用法的心情,之前你写的set open_applications to get application whose running is true其实差了点小细节——这里应该用复数的applications而不是单数application,因为你要筛选的是应用集合,不是单个应用。
正确获取所有运行中应用的写法
直接用applications(或every application)结合whose就能实现无交互的筛选:
set running_applications to every application whose running is true
或者更简洁的版本:
set running_applications to applications whose running is true
运行这段代码后,running_applications会存储所有当前处于运行状态的应用对象,完全不需要交互检测。
再给你拓展几个whose的实用场景
除了筛选运行状态,还可以结合其他条件精准定位应用:
- 筛选特定名称的运行中应用:
set is_safari_running to application "Safari" whose running is true
- 筛选名称包含特定关键词的运行中应用:
set chrome_related_apps to every application whose name contains "Chrome" and running is true
关于whose的核心逻辑
whose关键字的作用是从一个对象集合中筛选出符合条件的元素,语法结构是:[可枚举对象集合] whose [条件表达式]。这里的集合必须是AppleScript支持枚举的类型(比如applications、windows、files等),单个对象用whose是无效的,这也是你之前代码报错的关键原因。
内容的提问来源于stack exchange,提问作者xfoz
相关产品推荐
相关产品推荐

