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