デスクトップ上のウィンドウのリストを取得するために CGWindowListCopyWindowInfo を使用しています。Window List keysの値を使用して、表示されているウィンドウのみを除外したいと思います。私が問題を抱えている 1 つのウィンドウは、OSX メニュー バーです。私が考えた解決策の 1 つは、ウィンドウの境界の X と Y を見ることです。両方とも 0 に等しい可視ウィンドウはないようですが、この方法がどれほど信頼できるかはわかりません。
これを行うもう 1 つの方法は、PID 番号を OSX Window Server の番号と比較することですが、それを取得する方法がわかりません。誰かが私に正しい API を教えてくれますか、またはメニュー バーを除外する信頼できる方法を知っていますか?
編集:listOptions自体が十分ではないため、以下の追加でkondyと同じコードがあります:
CGRect windowBounds;
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef) [windowInfo objectForKey:(id)kCGWindowBounds], &windowBounds);
if (!(windowBounds.origin.x == 0 && windowBounds.origin.y == 0))
{
// Work with windows that aren't the Menubar
}