我正在使用 CGWindowListCopyWindowInfo 来获取桌面上的窗口列表。我想只使用Window List keys的值过滤掉可见的窗口。我遇到问题的一个窗口是 OSX 菜单栏。我想到的一种解决方案是查看窗口边界的 X 和 Y。没有可见的窗口似乎两者都等于 0,但我不确定这种方法有多可靠。
另一种方法是将PID号与OSX Window Server的PID号进行比较,但我不知道如何得到它。谁能指出我正确的 API 或知道过滤菜单栏的可靠方法?
编辑:我有与下面的 kondy 相同的代码,并添加了以下内容,因为 listOptions 本身还不够好:
CGRect windowBounds;
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef) [windowInfo objectForKey:(id)kCGWindowBounds], &windowBounds);
if (!(windowBounds.origin.x == 0 && windowBounds.origin.y == 0))
{
// Work with windows that aren't the Menubar
}