1

ffilib に基づく FFI を介して Quartz を使用しています (つまり、Quartz は動的にロードされます)。を呼び出すと、ウィンドウに関する情報を含む辞書の がCGWindowListCopyWindowInfo返されます。CFArray興味深いキーの 1 つkCGWindowNameは、ウィンドウの名前を取得するために使用できる です。

C では、適切なヘッダー ファイルをインクルードしますが、ffilib を使用しているため、 の値を知る必要がありますkCGWindowName。Appleのドキュメントによると、CFStringRef.

の値を取得するにはどうすればよいkCGWindowNameですか?

kCGWindowNameヘッダー ファイルをgrep しようとしても、使用できる結果は得られませんでした。

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 に答える