CGWindowListCopyWindowInfo
Declaration
CFArrayRef CGWindowListCopyWindowInfo(CGWindowListOption option, CGWindowID relativeToWindow);
参量:
option
描述返回哪些窗口字典的选项。使用典型的选项,您可以返回所有窗口或在relativeToWindow参数中指定的窗口之上或之下的窗口的字典。
enum
{
kCGWindowListOptionAll = 0,//列出所有窗口,包括屏幕上和屏幕外的窗口。 使用此选项检索列表时,应该将relativeToWindow参数设置为kCGNullWindowID
kCGWindowListOptionOnScreenOnly = (1 << 0),//列出当前屏幕上的所有窗口。 Windows按从前到后的顺序返回。 使用此选项检索列表时,应该将relativeToWindow参数设置为kCGNullWindowID
kCGWindowListOptionOnScreenAboveWindow = (1 << 1),//列出当前在屏幕上并在relativeToWindow参数指定的窗口之前的所有窗口。 Windows按从前到后的顺序返回
kCGWindowListOptionOnScreenBelowWindow = (1 << 2),//列出当前屏幕上以及在relativeToWindow参数指定的窗口之后的所有窗口。 Windows按从前到后的顺序返回
kCGWindowListOptionIncludingWindow = (1 << 3),//在返回列表中包括指定的窗口(来自relativeToWindow参数)。 您必须将此选项与kCGWindowListOptionOnScreenAboveWindow或kCGWindowListOptionOnScreenBelowWindow选项结合使用以检索有意义的结果
kCGWindowListExcludeDesktopElements = (1 << 4)//从列表中排除所有属于桌面元素的窗口,包括背景图片和桌面图标。 您可以将此选项与其他选项结合使用
}
relativeToWindow
确定要返回哪些其他窗口字典时用作参考点的窗口的ID。对于不需要参考窗口的选项,此参数可以是kCGNullWindowID。
返回值
CFDictionaryRef类型的数组,每个类型都包含有关当前用户会话中的一个窗口的信息。如果没有符合所需条件的窗口,该函数将返回一个空数组。如果从GUI安全会话之外或没有窗口服务器运行时调用此函数,则此函数返回NULL。
如:获取所有窗口,排除属于桌面元素的窗口
CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements | kCGWindowListOptionAll, kCGNullWindowID);
获取属于当前屏幕的所有窗口,排除属于桌面元素 的窗口
CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements | kCGWindowListOptionOnScreenOnly, kCGNullWindowID);