如何提高 CGWindowListCopyWindowInfo 的性能

How to improve CGWindowListCopyWindowInfo performance

CGWindowListCopyWindowInfo 的文档说

Generating the dictionaries for system windows is a relatively expensive operation. As always, you should profile your code and adjust your usage of this function appropriately for your needs.

我的问题是如何"adjust" 使用此功能?对于代码自动化过程,我经常需要检查 window 在文档或模式级别中最前面的内容。也就是说,我调用CGWindowListCopyWindowInfo,忽略属于其他进程或具有我不关心的级别的windows,并确定第一个剩下的window。

如果有一种方法可以仅询问有关我的进程所拥有的 windows 的信息,那就太好了,但我看不出有什么办法可以做到这一点。或者,如果有一种方法可以在我的 windows 更改时得到通知。当 windows 被隐藏或显示时,我可以观察 Carbon Events,但这当然是一项已弃用的技术。

您可以使用 [NSWindow windowNumbersWithOptions:0] 以 z 顺序获取当前应用程序 windows(在活动 space 上)的 window 编号。