如何提高CGWindowListCopyWindowInfo的性能

时间:2015-02-26 23:18:54

标签: macos performance quartz-2d

CGWindowListCopyWindowInfo的文档说

  

为系统窗口生成字典是一项相对昂贵的操作。与往常一样,您应该分析您的代码并根据您的需要适当调整此功能的使用。

我的问题是如何“调整”我对此功能的使用?对于代码自动化过程,我经常需要检查文档或模态级别中哪个窗口最前面。也就是说,我调用CGWindowListCopyWindowInfo,忽略属于其他进程的窗口或具有我不关心的级别,并识别剩下的第一个窗口。

如果有办法要求提供有关我的流程所拥有的Windows的信息,比如说那会很好,但我认为没办法这样做。或者,如果有办法在我的窗户更改时收到通知。当窗口被隐藏或显示时,我可以观察碳事件,但当然这是一种弃用的技术。

1 个答案:

答案 0 :(得分:2)

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