如何知道窗口是否最小化?

时间:2012-04-21 11:57:53

标签: macos cocoa

我想知道哪些窗口在屏幕上可见。 CGWindowListCopyWindowInfo为我提供了窗口列表,除了它还列出了最小化的窗口之外,它很棒。 我尝试使用kCGWindowIsOnscreen来检测隐藏/最小化的窗口,但它总是为所有窗口赋予TRUE。有什么方法可以以某种方式检测出来吗?

- (void) checkWindows {
NSMutableArray *windows = (__bridge NSMutableArray *)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);

for (NSDictionary *window in windows) {
    NSString *owner = [window objectForKey:@"kCGWindowOwnerName" ];
    NSString *name = [window objectForKey:@"kCGWindowName" ];
    CFBooleanRef visibleBR = (CFBooleanRef)[window objectForKey:@"kCGWindowIsOnscreen"];
    bool visible = CFBooleanGetValue(visibleBR);

    NSLog(@"%@,%@,Visible:%@",owner,name,visible?@"YES":@"NO");

}

}

更新:很奇怪,这只是微软的一句话。实际上它不必被隐藏,Word创建一个全屏窗口,该窗口不可见但列在可见窗口中。

1 个答案:

答案 0 :(得分:0)

问题是由MS Word引起的。 它创建一个全屏窗口,该窗口不可见,但列在可见窗口中。 CGWindowListCopyWindowInfo正确列出可见/最小化窗口。