【发布时间】:2013-01-11 00:22:08
【问题描述】:
我正在使用 CGWindowListCopyWindowInfo 来获取桌面上的窗口列表。我想使用Window List keys 的值仅过滤掉可见窗口。我遇到问题的一个窗口是 OSX 菜单栏。我想到的一种解决方案是查看窗口边界的 X 和 Y。似乎没有可见的窗口使这两个值都等于 0,但我不确定这种方法有多可靠。
执行此操作的另一种方法是将 PID 编号与 OSX Window Server 的编号进行比较,但我不确定如何获得。谁能指出我正确的 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
}
【问题讨论】:
-
您找到解决方案了吗?
-
我最终检查了窗口边界并查看 x 和 y 是否都等于 0。这篇文章告诉你如何获取窗口边界:stackoverflow.com/questions/6593710/get-a-bounds-of-windowref
标签: macos core-graphics