1

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

在 C 中会包含适当的头文件,但由于我使用的是 ffilib,我需要知道kCGWindowName. 根据 Apple 的文档,它是CFStringRef.

我怎样才能获得 的价值kCGWindowName

kCGWindowName在头文件中尝试 grepping没有给出可用的结果。

4

1 回答 1

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);
于 2012-12-02T20:51:25.183 回答