我通过基于ffilib的FFI使用Quartz(即Quartz是动态加载的)。对CGWindowListCopyWindowInfo
的调用会返回包含有关窗口信息的CFArray
字典。一个有趣的关键是kCGWindowName
,可用于获取窗口的名称。
在C中,会包含approriate头文件,但由于我使用的是ffilib,我需要知道kCGWindowName
的值。根据Apple的文档,它是CFStringRef
。
如何获取kCGWindowName
的值?
在头文件中尝试grepping kCGWindowName
没有给出可用的结果。
答案 0 :(得分:2)
像这样......
CFArrayRef windowsInfo = CGWindowListCopyWindowInfo(listOptions, kCGNullWindowID);
for (CFIndex idx=0; idx<CFArrayGetCount(windowsInfo); idx++) {
CFDictionaryRef dict = CFArrayGetValueAtIndex(windowsInfo, idx);
CFStringRef windowName = CFDictionaryGetValue(dict, kCGWindowName);
NSString* nsWindowName = (NSString*)windowName;
}
CFRelease(windowsInfo);