cocoa - 如何使用CGWindowListCopyWindowInfo从窗口列表中获取程序的信息

标签 cocoa nswindow

我成功地使用 CGWindowListCopyWindowInfo 获取了桌面上的窗口列表,但下一次是尝试获取窗口的属性,例如程序名称、标题和其他属性。

我应该研究什么 API?我们有关于如何执行此操作的示例吗?

最佳答案

列出窗口并在循环时检索特定信息:

NSMutableArray *windows = (NSMutableArray *)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);

for (NSDictionary *window in windows) {
    NSString *owner = [window objectForKey:@"kCGWindowOwnerName" ];
    NSString *name = [window objectForKey:@"kCGWindowName" ];
    NSLog(@"%@ - %@",owner,name);
}

可用键:

kCGWindowIsOnscreen
kCGWindowLayer 
kCGWindowMemoryUsage
kCGWindowName
kCGWindowNumber
kCGWindowOwnerName
kCGWindowOwnerPID
kCGWindowSharingState
kCGWindowStoreType

关于cocoa - 如何使用CGWindowListCopyWindowInfo从窗口列表中获取程序的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6160727/

相关文章:

cocoa - cocoa 中的 HIViewSetZOrder 等效项

objective-c - 在 NSPopover 中切换 NSView

objective-c - 在 Cocoa 中定义自己的关键路径运算符

macos - 如何以编程方式关闭全屏模式 NSWindow?

cocoa - BeginSheet不显示窗口

cocoa - 如何使用确定的 NSProgressIndicator 来检查 NSTask 的进度? - cocoa

cocoa - 从顶部调整 NSWindow 的大小

objective-c - 文档表不响应键盘事件

xcode - 在 cocoa 应用程序中以 int 形式检索垃圾箱大小