Macos 使用applescript捕获事件

Macos 使用applescript捕获事件,macos,applescript,Macos,Applescript,当其他(不相关的)应用程序更改状态(即关闭、最小化)时,applescript(或其他脚本)是否可能接收通知? 目标是维护最近关闭或最小化的5个应用程序的列表设置触发器的方法可能是 下面的脚本将为您提供所有当前最小化的应用程序(除了Finder之外,由于某些原因,存在明确的bug),您可以将其设置为每隔一段时间运行,甚至可以将其设置为在后台连续运行(我想性能会受到影响),但希望它能让您更接近解决方案(当然,意识到这并不能真正解决任何窗口问题的状态更改触发问题) 你真的不能用applescript

当其他(不相关的)应用程序更改状态(即关闭、最小化)时,applescript(或其他脚本)是否可能接收通知?
目标是维护最近关闭或最小化的5个应用程序的列表

设置触发器的方法可能是

下面的脚本将为您提供所有当前最小化的应用程序(除了Finder之外,由于某些原因,存在明确的bug),您可以将其设置为每隔一段时间运行,甚至可以将其设置为在后台连续运行(我想性能会受到影响),但希望它能让您更接近解决方案(当然,意识到这并不能真正解决任何窗口问题的状态更改触发问题)


你真的不能用applescript做到这一点。如果你知道objective-c,尽管它很简单。NSWorkspace发布了很多关于东西的通知,其中包括你想知道的关于应用程序隐藏、激活等的所有信息。请查看类文档,了解你能得到的所有通知

基本上,您只需编写一个接收这些通知的小型后台应用程序,然后您就可以对它们执行任何操作。下面的简单调用将为您注册所有通知,然后在“nsworkspaceNotification:”中注册一个简单的“if语句”:方法可以用来确定您正在接收哪些,并允许您对它们采取行动

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(nsworkspaceNotification:) name:nil object:nil];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(nsworkspaceNotification:) name:nil object:nil];