如何检查CGWindowID仍然有效

时间:2012-08-06 20:58:45

标签: objective-c macos cocoa

如果我得到如下的CGWindowID(_windowID)......

NSArray *windowList = (__bridge NSArray *)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
for (NSDictionary *info in windowList) { 
    if ([[info objectForKey:(NSString *)kCGWindowOwnerName] isEqualToString:@"window name"] && ![[info objectForKey:(NSString *)kCGWindowName] isEqualToString:@""]) {
        _windowID = [[info objectForKey:(NSString *)kCGWindowNumber] unsignedIntValue];
    }
}

如何正确测试窗口ID仍然有效且窗口尚未关闭?我只是运行类似的代码只检查窗口ID存在吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

kCGWindowListOptionOnScreenOnly常量的文档说:

  

列出当前屏幕上的所有窗口。 Windows将返回   从前到后订购。使用此选项检索列表时,   relativeToWindow参数应设置为kCGNullWindowID。

所以Windows肯定会出现在屏幕上,因为在调用CGWindowListCopyWindowInfo和你对它的行动之间似乎没有发生任何事情。

也许您想要测试以确保它们不被隐藏或最小化?