Cocoa kCGWindowName的值是多少?

Cocoa kCGWindowName的值是多少?,cocoa,quartz-graphics,Cocoa,Quartz Graphics,我通过基于ffilib的FFI使用Quartz(即Quartz是动态加载的)。调用CGWindowListCopyWindowInfo返回包含windows信息的字典的CFArray。一个有趣的键是kCGWindowName,它可以用来获取窗口的名称 在C语言中,可能会包含适当的头文件,但由于我使用的是ffilib,所以我需要知道kCGWindowName的值。根据苹果的文档,它是CFStringRef 如何获取kCGWindowName的值 在头文件中尝试对kCGWindowName进行gre

我通过基于ffilib的FFI使用Quartz(即Quartz是动态加载的)。调用
CGWindowListCopyWindowInfo
返回包含windows信息的字典的
CFArray
。一个有趣的键是
kCGWindowName
,它可以用来获取窗口的名称

在C语言中,可能会包含适当的头文件,但由于我使用的是ffilib,所以我需要知道
kCGWindowName
的值。根据苹果的文档,它是
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);
CFArrayRef windowsInfo=CGWindowListCopyWindowInfo(listOptions,kCGNullWindowID);

对于(CFIndex idx=0;idxOK),这就是您想要的。我也找不到它,但我猜了一下。我在代码中用CFSTR(“kCGWindowName”)替换了kCGWindowName,它工作了。这就是它的含义!它必须这样定义…const kCGWindowName=“kCGWindowName”。我希望这有帮助。这么简单!我应该猜到。接下来是如何构造CFString。不幸的是,CFSTR是宏,因此无法通过ffi使用。但我想我可以在某个头文件中找到CFSTR。最简单的解决方案是
CFStringCreateWithCString