1

如果我得到一个 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 是否存在?

提前致谢

4

1 回答 1

1

kCGWindowListOptionOnScreenOnly常量的文档说:

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

CGWindowListCopyWindowInfo所以窗口肯定会出现在屏幕上,因为在调用和您对它的操作 之间似乎没有发生任何事情。

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

于 2012-08-06T21:04:53.947 回答