我通过基于ffilib的FFI使用Quartz(即Quartz是动态加载的)。调用CGWindowListCopyWindowInfo
将返回包含窗口信息的字典的CFArray
。一个有趣的键是kCGWindowName
,它可以用来获取窗口的名称。
在C中,将包括适当的头文件,但是由于我使用的是ffilib,因此我需要知道kCGWindowName
的值。根据Apple的文档,它是CFStringRef
。
如何获取kCGWindowName
的值?
尝试在头文件中对kCGWindowName
进行grepping操作未得到可用结果。
最佳答案
像这样
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);